*/
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
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;
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,