diff --git a/ChangeLog b/ChangeLog index 8db9960770..ae78aea9f5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Tue Mar 25 12:24:15 2003 Yukihiro Matsumoto + + * 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 * io.c (rb_io_initialize): should check rb_secure(4). diff --git a/eval.c b/eval.c index ec3327f8cf..e59ad61e78 100644 --- a/eval.c +++ b/eval.c @@ -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); } diff --git a/ruby.c b/ruby.c index 40d9dbd23f..4f25fc49c1 100644 --- a/ruby.c +++ b/ruby.c @@ -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); } }