diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-19 11:49:51 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-19 11:49:51 +0000 |
commit | e4021207fb0add1133b0c3e7f3b2acc2bc8d877c (patch) | |
tree | b2a8156230bd9c9ccfb7d938256910ee2c246a06 | |
parent | fec2c12c29df1fdc33a4d7fc110673adc35b7432 (diff) | |
download | ruby-e4021207fb0add1133b0c3e7f3b2acc2bc8d877c.tar.gz |
* eval.c (rb_raise_jump): moved adjustment for control frame.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | eval.c | 6 |
2 files changed, 7 insertions, 3 deletions
@@ -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] @@ -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); } |