summaryrefslogtreecommitdiff
path: root/hash.c
diff options
context:
space:
mode:
authorknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-04-14 08:31:38 +0000
committerknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-04-14 08:31:38 +0000
commitac5b69acb8ccc578ea780701da4efb26f278ca48 (patch)
tree24cbf249c39588011280013379bafd97c60a6474 /hash.c
parent6866bce75736c176aba9788dd90cc344a57754ee (diff)
* hash.c (rb_hash_delete_if, rb_hash_reject_bang, env_delete_if,
env_reject_bang): Return an enumerator if no block is given. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16006 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'hash.c')
-rw-r--r--hash.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/hash.c b/hash.c
index 50fb4d7905..d9147d37e3 100644
--- a/hash.c
+++ b/hash.c
@@ -787,6 +787,7 @@ delete_if_i(VALUE key, VALUE value, VALUE hash)
VALUE
rb_hash_delete_if(VALUE hash)
{
+ RETURN_ENUMERATOR(hash, 0, 0);
rb_hash_modify(hash);
rb_hash_foreach(hash, delete_if_i, hash);
return hash;
@@ -804,6 +805,8 @@ VALUE
rb_hash_reject_bang(VALUE hash)
{
int n;
+
+ RETURN_ENUMERATOR(hash, 0, 0);
if (!RHASH(hash)->ntbl)
return Qnil;
n = RHASH(hash)->ntbl->num_entries;
@@ -2142,12 +2145,13 @@ env_each_pair(VALUE ehash)
}
static VALUE
-env_reject_bang(void)
+env_reject_bang(VALUE ehash)
{
volatile VALUE keys;
long i;
int del = 0;
+ RETURN_ENUMERATOR(ehash, 0, 0);
rb_secure(4);
keys = env_keys();
for (i=0; i<RARRAY_LEN(keys); i++) {
@@ -2165,9 +2169,9 @@ env_reject_bang(void)
}
static VALUE
-env_delete_if(void)
+env_delete_if(VALUE ehash)
{
- env_reject_bang();
+ env_reject_bang(ehash);
return envtbl;
}