summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--proc.c4
-rw-r--r--vm.c2
3 files changed, 8 insertions, 2 deletions
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 <ko1@atdot.net>
+
+ * proc.c, vm.c: fix to refer next ruby level cfp to make binding.
+
Wed Jul 2 01:58:19 2008 NAKAMURA Usaku <usa@ruby-lang.org>
* 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)) {