aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--eval.c6
2 files changed, 7 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 2d96c5f5fd..eec5f1106d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Tue Feb 19 20:49:49 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * eval.c (rb_raise_jump): moved adjustment for control frame.
+
Tue Feb 19 18:34:32 2008 Tanaka Akira <akr@fsij.org>
* gc.c (STACK_LENGTH) [SPARC] : 0x80 offset removed. [ruby-dev:33857]
diff --git a/eval.c b/eval.c
index e7d9c1f45e..db760116df 100644
--- a/eval.c
+++ b/eval.c
@@ -775,9 +775,7 @@ rb_f_raise(int argc, VALUE *argv)
argv = &err;
}
}
- err = rb_make_exception(argc, argv);
- GET_THREAD()->cfp++;
- rb_raise_jump(err);
+ rb_raise_jump(rb_make_exception(argc, argv));
return Qnil; /* not reached */
}
@@ -830,6 +828,8 @@ rb_make_exception(int argc, VALUE *argv)
void
rb_raise_jump(VALUE mesg)
{
+ rb_thread_t *th = GET_THREAD();
+ th->cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(th->cfp);
/* TODO: fix me */
rb_longjmp(TAG_RAISE, mesg);
}