util/hash_table: Do a full search when adding new items
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 5 Feb 2015 02:29:32 +0000 (18:29 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Sun, 8 Feb 2015 01:01:05 +0000 (17:01 -0800)
commitc9287e797b3e58bd4403f79d484e7235dc59262d
tree1582426ba9006bddad06260403b12aad0369bddc
parent1581e12aba3712fe4884586c7be6087b0a4a0041
util/hash_table: Do a full search when adding new items

Previously, the hash_table_insert function would bail early if it found a
deleted slot that it could re-use.  However, this is a problem if the key
being inserted is already in the hash table but further down the list.  If
this happens, the element ends up getting inserted in the hash table twice.
This commit makes it so that we walk over all of the possible entries for
the given key and then, if we don't find the key, place it in the available
free entry we found.

Reviewed-by: Eric Anholt <eric@anholt.net>
src/util/hash_table.c