summaryrefslogtreecommitdiff
path: root/hash.c
diff options
context:
space:
mode:
authorSamuel Williams <samuel.williams@oriontransfer.co.nz>2022-10-22 23:34:00 +1300
committerGitHub <noreply@github.com>2022-10-22 23:34:00 +1300
commit8dfe3bdf48ff73052de1262e4644c08742abd8e6 (patch)
treea437087830abc278c78163c69ff48da21d8e078f /hash.c
parent420bdba1397b355aec773688487229c20a1e7759 (diff)
downloadruby-8dfe3bdf48ff73052de1262e4644c08742abd8e6.tar.gz
Improved formatting of `hash_foreach_iter` functions. (#6615)
Diffstat (limited to 'hash.c')
-rw-r--r--hash.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/hash.c b/hash.c
index 8c20791ede..9218b17421 100644
--- a/hash.c
+++ b/hash.c
@@ -1349,10 +1349,10 @@ static int
hash_ar_foreach_iter(st_data_t key, st_data_t value, st_data_t argp, int error)
{
struct hash_foreach_arg *arg = (struct hash_foreach_arg *)argp;
- int status;
if (error) return ST_STOP;
- status = (*arg->func)((VALUE)key, (VALUE)value, arg->arg);
+
+ int status = (*arg->func)((VALUE)key, (VALUE)value, arg->arg);
/* TODO: rehash check? rb_raise(rb_eRuntimeError, "rehash occurred during iteration"); */
switch (status) {
@@ -1363,6 +1363,7 @@ hash_ar_foreach_iter(st_data_t key, st_data_t value, st_data_t argp, int error)
case ST_STOP:
return ST_STOP;
}
+
return ST_CHECK;
}
@@ -1370,15 +1371,16 @@ static int
hash_foreach_iter(st_data_t key, st_data_t value, st_data_t argp, int error)
{
struct hash_foreach_arg *arg = (struct hash_foreach_arg *)argp;
- int status;
- st_table *tbl;
if (error) return ST_STOP;
- tbl = RHASH_ST_TABLE(arg->hash);
- status = (*arg->func)((VALUE)key, (VALUE)value, arg->arg);
+
+ st_table *tbl = RHASH_ST_TABLE(arg->hash);
+ int status = (*arg->func)((VALUE)key, (VALUE)value, arg->arg);
+
if (RHASH_ST_TABLE(arg->hash) != tbl) {
- rb_raise(rb_eRuntimeError, "rehash occurred during iteration");
+ rb_raise(rb_eRuntimeError, "rehash occurred during iteration");
}
+
switch (status) {
case ST_DELETE:
return ST_DELETE;
@@ -1387,6 +1389,7 @@ hash_foreach_iter(st_data_t key, st_data_t value, st_data_t argp, int error)
case ST_STOP:
return ST_STOP;
}
+
return ST_CHECK;
}