summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--eval.c2
-rw-r--r--ruby.c5
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 <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).
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);
}
}