1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Refactor hash aset callback

This commit is contained in:
Nobuyoshi Nakada 2021-03-21 00:11:08 +09:00
parent cfadbf2fc4
commit 298edfa4a2
No known key found for this signature in database
GPG key ID: 7CD2805BFA3770C6

13
hash.c
View file

@ -1672,6 +1672,8 @@ struct update_arg {
VALUE old_value;
};
static int hash_update_replace(st_data_t *key, st_data_t *value, struct update_arg *arg, int existing, st_data_t newvalue);
typedef int (*tbl_update_func)(st_data_t *, st_data_t *, st_data_t, int);
int
@ -2837,16 +2839,7 @@ rb_hash_clear(VALUE hash)
static int
hash_aset(st_data_t *key, st_data_t *val, struct update_arg *arg, int existing)
{
if (existing) {
arg->new_value = arg->arg;
arg->old_value = *val;
}
else {
arg->new_key = *key;
arg->new_value = arg->arg;
}
*val = arg->arg;
return ST_CONTINUE;
return hash_update_replace(key, val, arg, existing, arg->arg);
}
VALUE