forked from enlightenment/efl
and when deleting a hash item - if hash data != NULL delete EXACTLY that
entry (if there are duplicates... this will avoid removing the wrong one) SVN revision: 36092
This commit is contained in:
parent
c4624ffa93
commit
bcabb2be60
|
@ -249,15 +249,18 @@ evas_hash_del(Evas_Hash *hash, const char *key, const void *data)
|
|||
el = (Evas_Hash_El *)l;
|
||||
if (!strcmp(el->key, key))
|
||||
{
|
||||
hash->buckets[hash_num] = evas_object_list_remove(hash->buckets[hash_num], el);
|
||||
free(el);
|
||||
hash->population--;
|
||||
if (hash->population <= 0)
|
||||
if ((!data) || (el->data == data))
|
||||
{
|
||||
free(hash);
|
||||
hash = NULL;
|
||||
hash->buckets[hash_num] = evas_object_list_remove(hash->buckets[hash_num], el);
|
||||
free(el);
|
||||
hash->population--;
|
||||
if (hash->population <= 0)
|
||||
{
|
||||
free(hash);
|
||||
hash = NULL;
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue