From 0cd7c01c6a4eaea12990fbcbd4d5b7c1a517683b Mon Sep 17 00:00:00 2001 From: matz Date: Tue, 25 Mar 2003 08:26:08 +0000 Subject: * 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. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3612 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ eval.c | 2 +- ruby.c | 5 ++++- 3 files changed, 12 insertions(+), 2 deletions(-) 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); } } -- cgit v1.2.3