aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-03-31 02:06:23 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-03-31 02:06:23 +0000
commitd0932798885381b1160614cdc2562a084f043d67 (patch)
treed59240216be785e7f662288bd8a5905e81f272a3
parent5bfef93c44f00eb7028520e8437e0f957e3cd3b0 (diff)
downloadruby-d0932798885381b1160614cdc2562a084f043d67.tar.gz
* hash.c (env_reject_bang): untaint key string.
* hash.c (env_delete_m): execute block only if deleting key does not exist. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3637 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog7
-rw-r--r--hash.c7
-rw-r--r--lib/benchmark.rb6
3 files changed, 15 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index d64a3d2729..88987b109b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Mon Mar 31 10:50:48 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * hash.c (env_reject_bang): untaint key string.
+
+ * hash.c (env_delete_m): execute block only if deleting key does
+ not exist.
+
Sat Mar 29 17:54:46 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
* pack.c (pack_pack): do not call rb_str_buf_cat() with NULL ptr,
diff --git a/hash.c b/hash.c
index 1bb4c93bf6..a2fa1fdcdf 100644
--- a/hash.c
+++ b/hash.c
@@ -1002,8 +1002,10 @@ static VALUE
env_delete_m(obj, name)
VALUE obj, name;
{
- VALUE val = env_delete(obj, name);
- if (rb_block_given_p()) rb_yield(name);
+ VALUE val;
+
+ val = env_delete(obj, name);
+ if (NIL_P(val) && rb_block_given_p()) rb_yield(name);
return val;
}
@@ -1342,6 +1344,7 @@ env_reject_bang()
VALUE val = rb_f_getenv(Qnil, *ptr);
if (!NIL_P(val)) {
if (RTEST(rb_yield(rb_assoc_new(*ptr, val)))) {
+ FL_UNSET(*ptr, FL_TAINT);
env_delete(Qnil, *ptr);
del++;
}
diff --git a/lib/benchmark.rb b/lib/benchmark.rb
index 16c4cb611a..b664841fe6 100644
--- a/lib/benchmark.rb
+++ b/lib/benchmark.rb
@@ -450,11 +450,11 @@ module Benchmark
STDOUT.sync = sync
end
- def bm(label_width = 0, *labels, &blk)
- benchmark(" "*label_width + CAPTION, label_width, FMTSTR, *labels, &blk)
+ def bm(label_width = 0, *labels)
+ benchmark(" "*label_width + CAPTION, label_width, FMTSTR, *labels){|*x|yield *x}
end
- def bmbm(width = 0, &blk)
+ def bmbm(width = 0)
job = Job.new(width)
yield(job)
width = job.width