mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
0b091fdac6
Check whether the current or previous frame is a Ruby frame in call_trace_func and rb_tracearg_binding before attempting to create a binding for the frame. Fixes [Bug #18487] Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>
28 lines
626 B
Ruby
28 lines
626 B
Ruby
require_relative 'spec_helper'
|
|
|
|
load_extension("binding")
|
|
|
|
describe "CApiBindingSpecs" do
|
|
before :each do
|
|
@b = CApiBindingSpecs.new
|
|
end
|
|
|
|
describe "Kernel#binding" do
|
|
ruby_version_is '3.2' do
|
|
it "raises when called from C" do
|
|
foo = 14
|
|
-> { @b.get_binding }.should raise_error(RuntimeError)
|
|
end
|
|
end
|
|
|
|
ruby_version_is ''...'3.2' do
|
|
it "gives the top-most Ruby binding when called from C" do
|
|
foo = 14
|
|
b = @b.get_binding
|
|
b.local_variable_get(:foo).should == 14
|
|
b.local_variable_set :foo, 12
|
|
foo.should == 12
|
|
end
|
|
end
|
|
end
|
|
end
|