summaryrefslogtreecommitdiffstats
path: root/hash.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-12-20 16:59:09 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-12-20 16:59:09 +0000
commit630f2ce3f0b555f993005fb1c769a9cb097cfaaf (patch)
tree887f55ec305ae98927ec8ec4dcbea3245221db6d /hash.c
parent57a47fb3881b56058743fe117a4a4c198793a9e6 (diff)
downloadruby-630f2ce3f0b555f993005fb1c769a9cb097cfaaf.tar.gz
ruby-630f2ce3f0b555f993005fb1c769a9cb097cfaaf.tar.xz
ruby-630f2ce3f0b555f993005fb1c769a9cb097cfaaf.zip
dln.c: remove last second typo.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@5233 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'hash.c')
-rw-r--r--hash.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/hash.c b/hash.c
index 48c0aba7a..102682c0b 100644
--- a/hash.c
+++ b/hash.c
@@ -460,12 +460,12 @@ rb_hash_shift(hash)
}
static enum st_retval
-delete_if_i(key, value, keys)
- VALUE key, value, keys;
+delete_if_i(key, value)
+ VALUE key, value;
{
- if (key != Qundef && RTEST(rb_yield_values(2, key, value))) {
- rb_ary_push(keys, key);
- }
+ if (key == Qundef) return ST_CONTINUE;
+ if (RTEST(rb_yield_values(2, key, value)))
+ return ST_DELETE;
return ST_CONTINUE;
}
@@ -473,14 +473,8 @@ VALUE
rb_hash_delete_if(hash)
VALUE hash;
{
- VALUE keys = rb_ary_new();
- long i;
-
rb_hash_modify(hash);
- rb_hash_foreach(hash, delete_if_i, keys);
- for (i=0; i<RARRAY(keys)->len; i++) {
- st_delete(RHASH(hash)->tbl, &RARRAY(keys)->ptr[i], 0);
- }
+ rb_hash_foreach(hash, delete_if_i, 0);
return hash;
}