eina: fix eina_hash_set to act when data == NULL like eina_hash_del.
authorCedric BAIL <cedric.bail@free.fr>
Tue, 31 May 2011 16:43:40 +0000 (16:43 +0000)
committerCedric BAIL <cedric.bail@free.fr>
Tue, 31 May 2011 16:43:40 +0000 (16:43 +0000)
SVN revision: 59849

legacy/eina/ChangeLog
legacy/eina/src/include/eina_hash.h
legacy/eina/src/lib/eina_hash.c

index 093de19..a664a01 100644 (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.
index fec43df..3abd363 100644 (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
index 2e9040a..bf1bcd7 100644 (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,