diff --git a/ChangeLog b/ChangeLog index ffdfdf7aaf..f4901afaf5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Wed Jul 2 02:02:34 2008 Koichi Sasada + + * proc.c, vm.c: fix to refer next ruby level cfp to make binding. + Wed Jul 2 01:58:19 2008 NAKAMURA Usaku * insns.def (trace): C99ism. diff --git a/proc.c b/proc.c index f2d69c7317..cb98853a1b 100644 --- a/proc.c +++ b/proc.c @@ -271,11 +271,13 @@ binding_clone(VALUE self) return bindval; } +rb_control_frame_t *vm_get_ruby_level_next_cfp(rb_thread_t *th, rb_control_frame_t *cfp); + VALUE rb_binding_new(void) { rb_thread_t *th = GET_THREAD(); - rb_control_frame_t *cfp = vm_get_ruby_level_caller_cfp(th, th->cfp); + rb_control_frame_t *cfp = vm_get_ruby_level_next_cfp(th, th->cfp); VALUE bindval = binding_alloc(rb_cBinding); rb_binding_t *bind; diff --git a/vm.c b/vm.c index 6039daef05..793b9fd30a 100644 --- a/vm.c +++ b/vm.c @@ -96,7 +96,7 @@ vm_set_eval_stack(rb_thread_t * th, VALUE iseqval, const NODE *cref) } } -static rb_control_frame_t * +rb_control_frame_t * vm_get_ruby_level_next_cfp(rb_thread_t *th, rb_control_frame_t *cfp) { while (!RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(th, cfp)) {