void zhashx_destroy (zhashx_t **self_p) { assert (self_p); if (*self_p) { zhashx_t *self = *self_p; if (self->items) { s_purge (self); free (self->items); } zlistx_destroy (&self->comments); free (self->filename); free (self); *self_p = NULL; } }
// -------------------------------------------------------------------------- // Delete all items from the hash table. If the key destructor is // set, calls it on every key. If the item destructor is set, calls // it on every item. void zhash_purge (zhash_t *self) { assert (self); s_purge (self); if (self->prime_index > INITIAL_PRIME) { // Try to shrink hash table size_t limit = primes [INITIAL_PRIME]; item_t **items = (item_t **) zmalloc (sizeof (item_t *) * limit); if (items) { free (self->items); self->prime_index = INITIAL_PRIME; self->chain_limit = INITIAL_CHAIN; self->items = items; } } }