summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-02-19 02:14:14 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-02-19 02:14:14 +0000
commit9ffeef1fa60bf30e46665940e8ae93f9e787002a (patch)
treec8b7dd7809d0f2058c70dd857de3eba96c080175 /eval.c
parent84bc77ed0ac6461963bee646f5adc4b75895a8ac (diff)
downloadruby-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.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/eval.c b/eval.c
index b738ec431..e7d9c1f45 100644
--- a/eval.c
+++ b/eval.c
@@ -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 */
}