diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-03-05 03:43:45 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-03-05 03:43:45 +0000 |
commit | e5ac15998d29d5a239827fadc95ec3ff6d8f455a (patch) | |
tree | 8e6c4cf76940ceadee3627fd455e6437d499a135 /st.c | |
parent | 697b53d8a96db8ad797baa5fca37d6cec5d7ca9d (diff) | |
download | ruby-e5ac15998d29d5a239827fadc95ec3ff6d8f455a.tar.gz |
* st.c (unpack_entries): reallocate bins if packed array size
is not same as initial bins size. based on a patch by
Sokolov Yura <funny.falcon AT gmail.com>.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34900 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'st.c')
-rw-r--r-- | st.c | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -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); |