mirror of
https://github.com/ruby/ruby.git
synced 2025-08-23 04:55:21 +02:00
* vm_eval.c (eval_string_with_cref): A binding should keep
refinements activation information and the refinements should be activated in subsequent eval calls with the binding. [ruby-core:67945] [Bug #10818] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49851 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
e5eb9a16df
commit
f403624a6f
3 changed files with 39 additions and 20 deletions
13
vm_eval.c
13
vm_eval.c
|
@ -1304,10 +1304,15 @@ eval_string_with_cref(VALUE self, VALUE src, VALUE scope, NODE *const cref_arg,
|
|||
th->parse_in_eval--;
|
||||
|
||||
if (!cref && base_block->iseq) {
|
||||
orig_cref = rb_vm_get_cref(base_block->iseq, base_block->ep);
|
||||
cref = NEW_CREF(Qnil);
|
||||
crefval = (VALUE) cref;
|
||||
COPY_CREF(cref, orig_cref);
|
||||
if (NIL_P(scope)) {
|
||||
orig_cref = rb_vm_get_cref(base_block->iseq, base_block->ep);
|
||||
cref = NEW_CREF(Qnil);
|
||||
crefval = (VALUE) cref;
|
||||
COPY_CREF(cref, orig_cref);
|
||||
}
|
||||
else {
|
||||
cref = rb_vm_get_cref(base_block->iseq, base_block->ep);
|
||||
}
|
||||
}
|
||||
vm_set_eval_stack(th, iseqval, cref, base_block);
|
||||
th->cfp->klass = CLASS_OF(base_block->self);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue