- if (!hash_table) {
- hash_table = new_array(int32, TABLESIZE);
+ /* Dynamically calculate the hash table size so that the hash load
-+ * for big files is about 80%. This number must be odd or s2 will
-+ * not be able to span the entire set. */
++ * for big files is about 80%. A number greater than the traditional
++ * size must be odd or s2 will not be able to span the entire set. */
+ tablesize = (uint32)(s->count/8) * 10 + 11;
+ if (tablesize < TRADITIONAL_TABLESIZE)
+ tablesize = TRADITIONAL_TABLESIZE;