summaryrefslogtreecommitdiff
path: root/hash.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-04-13 11:30:39 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-04-13 11:30:39 +0000
commit723bfaba5944a205844ef37456d5dbf2e92291ee (patch)
tree5b993f6cd6744a4a69c1eed316badec7f7cd39a8 /hash.c
parent99d38f82e0ff0480822fe25047b07a07030a7c3e (diff)
* hash.c (no_new_key): moved test to raise outside.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35318 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'hash.c')
-rw-r--r--hash.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/hash.c b/hash.c
index f5d8e8d005..1b495c788c 100644
--- a/hash.c
+++ b/hash.c
@@ -260,19 +260,18 @@ rb_hash_modify(VALUE hash)
rb_hash_tbl(hash);
}
+NORETURN(static void no_new_key(void));
static void
-no_new_key(int existing)
+no_new_key(void)
{
- if (!existing) {
- rb_raise(rb_eRuntimeError, "can't add a new key into hash during iteration");
- }
+ rb_raise(rb_eRuntimeError, "can't add a new key into hash during iteration");
}
#define NOINSERT_UPDATE_CALLBACK(func) \
int \
func##_noinsert(st_data_t *key, st_data_t *val, st_data_t arg, int existing) \
{ \
- no_new_key(existing); \
+ if (!existing) no_new_key(); \
return func(key, val, arg, existing); \
}
@@ -1158,7 +1157,7 @@ rb_hash_aset(VALUE hash, VALUE key, VALUE val)
rb_hash_modify(hash);
if (!tbl) {
- if (iter_lev > 0) no_new_key(0);
+ if (iter_lev > 0) no_new_key();
tbl = RHASH_TBL(hash);
}
if (tbl->type == &identhash || rb_obj_class(key) != rb_cString) {