зеркало из https://github.com/github/ruby.git
st.c: bin might be zero
When EMPTY_OR_DELETED_BIN_P(bin) is true, it is a wrong idea to subtract ENTRY_BASE from it. Delay doing so until we are sure to be safe. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65635 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
e226772ab6
Коммит
e3cfb1f3ca
2
st.c
2
st.c
|
@ -2184,13 +2184,13 @@ st_rehash_indexed(st_table *tab)
|
|||
ind = hash_bin(p->hash, tab);
|
||||
for(;;) {
|
||||
st_index_t bin = get_bin(bins, size_ind, ind);
|
||||
st_table_entry *q = &tab->entries[bin - ENTRY_BASE];
|
||||
if (EMPTY_OR_DELETED_BIN_P(bin)) {
|
||||
/* ok, new room */
|
||||
set_bin(bins, size_ind, ind, i + ENTRY_BASE);
|
||||
break;
|
||||
}
|
||||
else {
|
||||
st_table_entry *q = &tab->entries[bin - ENTRY_BASE];
|
||||
DO_PTR_EQUAL_CHECK(tab, q, p->hash, p->key, eq_p, rebuilt_p);
|
||||
if (EXPECT(rebuilt_p, 0))
|
||||
return TRUE;
|
||||
|
|
Загрузка…
Ссылка в новой задаче