From 84f204046b64feb38873845612b8177c663b7960 Mon Sep 17 00:00:00 2001 From: naruse Date: Mon, 16 Jan 2012 22:38:05 +0000 Subject: * st.c (unpack_entries): Fix r34310: on unpacking, the position of a hash must be do_hash-ed value. * st.c (add_packed_direct): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34319 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ st.c | 5 +++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 994e7502a3..d48718ac5b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Tue Jan 17 07:30:12 2012 NARUSE, Yui + + * st.c (unpack_entries): Fix r34310: on unpacking, the position of + a hash must be do_hash-ed value. + + * st.c (add_packed_direct): ditto. + Mon Jan 16 16:41:53 2012 Nobuyoshi Nakada * lib/optparse.rb (Regexp): fix incorrect options when casting to diff --git a/st.c b/st.c index 48fe565993..4252e1c350 100644 --- a/st.c +++ b/st.c @@ -462,7 +462,7 @@ unpack_entries(register st_table *table) tmp_table.num_entries = 0; memset(tmp_table.bins, 0, sizeof(struct st_table_entry *) * tmp_table.num_bins); for (i = 0; i < table->num_entries; i++) { - st_index_t hash_val = PKEY(table, i); /* do_hash(PKEY(table, i), &tmp_table); */ + st_index_t hash_val = do_hash(PKEY(table, i), &tmp_table); add_direct(&tmp_table, PKEY(table, i), PVAL(table, i), hash_val, hash_val % tmp_table.num_bins); } @@ -478,8 +478,9 @@ add_packed_direct(st_table *table, st_data_t key, st_data_t value) PVAL_SET(table, i, value); } else { + st_index_t hash_val = do_hash(key, table); unpack_entries(table); - add_direct(table, key, value, key, key % table->num_bins); + add_direct(table, key, value, hash_val, hash_val % table->num_bins); } } -- cgit v1.2.3