diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-19 02:14:14 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-19 02:14:14 +0000 |
commit | 9ffeef1fa60bf30e46665940e8ae93f9e787002a (patch) | |
tree | c8b7dd7809d0f2058c70dd857de3eba96c080175 /eval.c | |
parent | 84bc77ed0ac6461963bee646f5adc4b75895a8ac (diff) | |
download | ruby-9ffeef1fa60bf30e46665940e8ae93f9e787002a.tar.gz ruby-9ffeef1fa60bf30e46665940e8ae93f9e787002a.tar.xz ruby-9ffeef1fa60bf30e46665940e8ae93f9e787002a.zip |
* eval.c (ruby_exec_node): no thread starts inside iseq compilation.
* eval.c (rb_f_raise): skip current control frame. [ruby-core:15589]
* insns.def (opt_div): raise as the ordinary method. [ruby-core:15589]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@15544 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -225,9 +225,9 @@ ruby_exec_node(void *n, char *file) PUSH_TAG(); if ((state = EXEC_TAG()) == 0) { + VALUE iseq = rb_iseq_new(n, rb_str_new2("<main>"), + rb_str_new2(file), Qfalse, ISEQ_TYPE_TOP); SAVE_ROOT_JMPBUF(th, { - VALUE iseq = rb_iseq_new(n, rb_str_new2("<main>"), - rb_str_new2(file), Qfalse, ISEQ_TYPE_TOP); th->base_block = 0; val = rb_iseq_eval(iseq); }); @@ -775,7 +775,9 @@ rb_f_raise(int argc, VALUE *argv) argv = &err; } } - rb_raise_jump(rb_make_exception(argc, argv)); + err = rb_make_exception(argc, argv); + GET_THREAD()->cfp++; + rb_raise_jump(err); return Qnil; /* not reached */ } |