rb_hash_transient_heap_evacuate: do not goto into a branch

I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea.  Better refactor.
This commit is contained in:
卜部昌平 2020-06-15 15:12:54 +09:00
Родитель 5f60538245
Коммит 1e8461424c
1 изменённых файлов: 4 добавлений и 5 удалений

9
hash.c
Просмотреть файл

@ -1288,15 +1288,14 @@ rb_hash_transient_heap_evacuate(VALUE hash, int promote)
return;
}
HASH_ASSERT(old_tab != NULL);
if (! promote) {
new_tab = rb_transient_heap_alloc(hash, sizeof(ar_table));
if (new_tab == NULL) promote = true;
}
if (promote) {
promote:
new_tab = ruby_xmalloc(sizeof(ar_table));
RHASH_UNSET_TRANSIENT_FLAG(hash);
}
else {
new_tab = rb_transient_heap_alloc(hash, sizeof(ar_table));
if (new_tab == NULL) goto promote;
}
*new_tab = *old_tab;
hash_ar_table_set(hash, new_tab);
}