[Mesa-dev] [PATCH 1/5] util/set: don't compare against deleted entries

Timothy Arceri t_arceri at yahoo.com.au
Mon Nov 16 15:56:34 PST 2015


On Sat, 2015-11-14 at 21:59 -0500, Connor Abbott wrote:
> Not sure how this wasn't already caught by valgrind, but it fixes an
> issue with the vectorizer.

Can you give a more detailed description of the problem that is fixed? I'm
assuming its something to do with the key_equals_function having issues
comparing to the deleted_key value?

> 
> Signed-off-by: Connor Abbott <cwabbott0 at gmail.com>
> ---
>  src/util/set.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/src/util/set.c b/src/util/set.c
> index f01f869..331ff58 100644
> --- a/src/util/set.c
> +++ b/src/util/set.c
> @@ -282,7 +282,8 @@ set_add(struct set *ht, uint32_t hash, const void *key)
>         * If freeing of old keys is required to avoid memory leaks,
>         * perform a search before inserting.
>         */
> -      if (entry->hash == hash &&
> +      if (entry_is_present(entry) &&

You can use !entry_is_deleted(entry) here as free entries will have already
cased the loop the break.

With these two comments addressed this and patch 2 are:

Reviewed-by: Timothy Arceri <timothy.arceri at collabora.com>

> +          entry->hash == hash &&
>            ht->key_equals_function(key, entry->key)) {
>           entry->key = key;
>           return entry;


More information about the mesa-dev mailing list