summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-02-19 11:49:51 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-02-19 11:49:51 +0000
commita88cf4aae3f226a8e0e3fade35e105ea450ad837 (patch)
treeb2a8156230bd9c9ccfb7d938256910ee2c246a06 /eval.c
parentf9ef9bded90ae66a716bf987ee5f9bf44e39c9aa (diff)
downloadruby-a88cf4aae3f226a8e0e3fade35e105ea450ad837.tar.gz
ruby-a88cf4aae3f226a8e0e3fade35e105ea450ad837.tar.xz
ruby-a88cf4aae3f226a8e0e3fade35e105ea450ad837.zip
* eval.c (rb_raise_jump): moved adjustment for control frame.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@15549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/eval.c b/eval.c
index e7d9c1f45..db760116d 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);
}