diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-08-29 06:28:51 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-08-29 06:28:51 +0000 |
commit | b47a99485bf9937ceb5f137916bc1fd85cc2304f (patch) | |
tree | 8a19cfabf94ad8d5763a4120e7827b95b278838e /eval.c | |
parent | 5f224f686990e9c913b4f00daf93cf1a541dfb6c (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.c | 13 |
1 files changed, 6 insertions, 7 deletions
@@ -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; |