From e5ac15998d29d5a239827fadc95ec3ff6d8f455a Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 5 Mar 2012 03:43:45 +0000 Subject: * st.c (unpack_entries): reallocate bins if packed array size is not same as initial bins size. based on a patch by Sokolov Yura . git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34900 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ st.c | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/ChangeLog b/ChangeLog index d3b20624c7..518879b228 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Mon Mar 5 12:43:43 2012 Nobuyoshi Nakada + + * st.c (unpack_entries): reallocate bins if packed array size + is not same as initial bins size. based on a patch by + Sokolov Yura . + Mon Mar 5 11:51:48 2012 NARUSE, Yui * ext/bigdecimal/lib/bigdecimal/math.rb: remove description about diff --git a/st.c b/st.c index f40ad33c8c..9c4a19fdd2 100644 --- a/st.c +++ b/st.c @@ -478,7 +478,12 @@ unpack_entries(register st_table *table) table->bins = (st_table_entry **)&packed_bins; tmp_table.entries_packed = 0; tmp_table.num_entries = 0; +#if ST_DEFAULT_INIT_TABLE_SIZE == ST_DEFAULT_PACKED_TABLE_SIZE MEMZERO(tmp_table.bins, st_table_entry*, tmp_table.num_bins); +#else + tmp_table.bins = st_realloc_bins(tmp_table.bins, ST_DEFAULT_INIT_TABLE_SIZE, tmp_table.num_bins); + tmp_table.num_bins = ST_DEFAULT_INIT_TABLE_SIZE; +#endif for (i = 0; i < table->num_entries; i++) { /* packed table should be numhash */ st_index_t key = PKEY(table, i), value = PVAL(table, i); -- cgit v1.2.3