eina: fix eina_hash_set to act when data == NULL like eina_hash_del.

SVN revision: 59849
This commit is contained in:
Cedric BAIL 2011-05-31 16:43:40 +00:00
parent 191c79c9e1
commit a0ea6c5130
3 changed files with 17 additions and 3 deletions

View File

@ -97,3 +97,7 @@
2011-05-30 Cedric Bail
* Add eina_condition_timedwait.
2011-05-31 Cedric Bail
* Fix eina_hash_set to handle data == NULL like eina_hash_del.

View File

@ -379,7 +379,7 @@ EAPI void *eina_hash_modify(Eina_Hash *hash,
*/
EAPI void *eina_hash_set(Eina_Hash *hash,
const void *key,
const void *data) EINA_ARG_NONNULL(1, 2, 3);
const void *data) EINA_ARG_NONNULL(1, 2);
/**
* @brief Change the key associated with a data without triggering the

View File

@ -1103,7 +1103,6 @@ eina_hash_set(Eina_Hash *hash, const void *key, const void *data)
EINA_SAFETY_ON_NULL_RETURN_VAL(hash, NULL);
EINA_SAFETY_ON_NULL_RETURN_VAL(hash->key_hash_cb, NULL);
EINA_SAFETY_ON_NULL_RETURN_VAL(key, NULL);
EINA_SAFETY_ON_NULL_RETURN_VAL(data, NULL);
EINA_MAGIC_CHECK_HASH(hash);
key_length = hash->key_length_cb ? hash->key_length_cb(key) : 0;
@ -1119,10 +1118,21 @@ eina_hash_set(Eina_Hash *hash, const void *key, const void *data)
void *old_data = NULL;
old_data = hash_element->tuple.data;
hash_element->tuple.data = (void *)data;
if (data)
{
hash_element->tuple.data = (void *)data;
}
else
{
_eina_hash_del_by_hash_el(hash, hash_element, hash_head, key_hash);
}
return old_data;
}
if (!data) return NULL;
eina_hash_add_alloc_by_hash(hash,
key,
key_length,