+ uint32 prior_size = 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. */
+ tablesize = (uint32)(s->count/8) * 10 + 11;
+ if (tablesize < 65537)
+ tablesize = 65537; /* a prime number */
+ if (tablesize != prior_size) {
+ free(sum_table);
+ sum_table = new_array(int32, tablesize);
+ if (!sum_table)
+ out_of_memory("build_hash_table");
+ }