summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-08-29 06:28:51 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-08-29 06:28:51 +0000
commitb47a99485bf9937ceb5f137916bc1fd85cc2304f (patch)
tree8a19cfabf94ad8d5763a4120e7827b95b278838e /eval.c
parent5f224f686990e9c913b4f00daf93cf1a541dfb6c (diff)
* parse.y (yylex): ternary ? can be followed by newline.
* eval.c (rb_f_require): should check static linked libraries before raising exception. * array.c (rb_ary_equal): check identiry equality first. * string.c (rb_str_equal): ditto. * struct.c (rb_struct_equal): ditto. * numeric.c (Init_Numeric): undef Integer::new. * eval.c (rb_eval): NODE_WHILE should update result for each conditional evaluation. * eval.c (rb_eval): NODE_UNTIL should return last evaluated value (or value given to break). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1714 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/eval.c b/eval.c
index f88510e15c..0ca486c207 100644
--- a/eval.c
+++ b/eval.c
@@ -2280,7 +2280,7 @@ rb_eval(self, n)
rb_eval(self, node->nd_body);
while_next:
;
- } while (RTEST(rb_eval(self, node->nd_cond)));
+ } while (RTEST(result = rb_eval(self, node->nd_cond)));
break;
case TAG_REDO:
@@ -2311,7 +2311,7 @@ rb_eval(self, n)
rb_eval(self, node->nd_body);
until_next:
;
- } while (!RTEST(rb_eval(self, node->nd_cond)));
+ } while (!RTEST(result = rb_eval(self, node->nd_cond)));
break;
case TAG_REDO:
@@ -2329,7 +2329,7 @@ rb_eval(self, n)
until_out:
POP_TAG();
if (state) JUMP_TAG(state);
- RETURN(Qnil);
+ RETURN(result);
case NODE_BLOCK_PASS:
result = block_pass(self, node);
@@ -3976,7 +3976,7 @@ handle_rescue(self, node)
if (!rb_obj_is_kind_of(argv[0], rb_cModule)) {
rb_raise(rb_eTypeError, "class or module required for rescue clause");
}
- if (rb_funcall(*argv, eqq, 1, ruby_errinfo)) return 1;
+ if (RTEST(rb_funcall(*argv, eqq, 1, ruby_errinfo))) return 1;
argv++;
}
return 0;
@@ -5494,6 +5494,8 @@ rb_f_require(obj, fname)
fname = rb_find_file(tmp);
goto load_dyna;
}
+ if (rb_feature_p(RSTRING(fname)->ptr, Qfalse))
+ return Qfalse;
rb_raise(rb_eLoadError, "No such file to load -- %s", RSTRING(fname)->ptr);
load_dyna:
@@ -8329,9 +8331,6 @@ rb_thread_start_0(fn, arg, th_arg)
while (saved_block) {
struct BLOCK *tmp = saved_block;
- if (curr_thread == main_thread) {
- printf("free(%p)\n", saved_block);
- }
if (tmp->frame.argc > 0)
free(tmp->frame.argv);
saved_block = tmp->prev;