diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | eval.c | 2 | ||||
-rw-r--r-- | ruby.c | 5 |
3 files changed, 12 insertions, 2 deletions
@@ -1,3 +1,10 @@ +Tue Mar 25 12:24:15 2003 Yukihiro Matsumoto <matz@ruby-lang.org> + + * eval.c (rb_yield_0): call avalue_to_mrhs() to assign block + parameter |a|. [ruby-dev:19897] + + * ruby.c (ruby_set_argv): freeze argument strings. + Tue Mar 25 12:01:54 2003 Yukihiro Matsumoto <matz@ruby-lang.org> * io.c (rb_io_initialize): should check rb_secure(4). @@ -3982,7 +3982,7 @@ rb_yield_0(val, self, klass, pcall, avalue) massign(self, block->var, val, pcall); } else { - if (avalue) val = avalue_to_svalue(val); + if (avalue) val = avalue_to_mrhs(val); if (val == Qundef) val = Qnil; assign(self, block->var, val, pcall); } @@ -1055,7 +1055,10 @@ ruby_set_argv(argc, argv) #endif rb_ary_clear(rb_argv); for (i=0; i < argc; i++) { - rb_ary_push(rb_argv, rb_tainted_str_new2(argv[i])); + VALUE arg = rb_tainted_str_new2(argv[i]); + + OBJ_FREEZE(arg); + rb_ary_push(rb_argv, arg); } } |