diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-11-08 09:52:14 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-11-08 09:52:14 +0000 |
commit | e3cfb1f3ca9ab0ef4980e4e3cf983323da9a1846 (patch) | |
tree | d018f234853a299f4340db94eb410a6439e210b0 | |
parent | e226772ab65187ffa394d081da6bfaf3f79c2ffa (diff) |
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
-rw-r--r-- | st.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -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; |