ruby-changes:74207
From: Samuel <ko1@a...>
Date: Sat, 22 Oct 2022 19:34:24 +0900 (JST)
Subject: [ruby-changes:74207] 8dfe3bdf48 (master): Improved formatting of `hash_foreach_iter` functions. (#6615)
https://git.ruby-lang.org/ruby.git/commit/?id=8dfe3bdf48 From 8dfe3bdf48ff73052de1262e4644c08742abd8e6 Mon Sep 17 00:00:00 2001 From: Samuel Williams <samuel.williams@o...> Date: Sat, 22 Oct 2022 23:34:00 +1300 Subject: Improved formatting of `hash_foreach_iter` functions. (#6615) --- hash.c | 17 ++++++++++------- 1 file 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 https://github.com/ruby/ruby/blob/trunk/hash.c#L1349 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) https://github.com/ruby/ruby/blob/trunk/hash.c#L1363 case ST_STOP: return ST_STOP; } + return ST_CHECK; } @@ -1370,15 +1371,16 @@ static int https://github.com/ruby/ruby/blob/trunk/hash.c#L1371 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) https://github.com/ruby/ruby/blob/trunk/hash.c#L1389 case ST_STOP: return ST_STOP; } + return ST_CHECK; } -- cgit v1.2.3 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/