value: allow multiple flush.
authorbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 10 Feb 2012 21:34:28 +0000 (21:34 +0000)
committerbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 10 Feb 2012 21:34:28 +0000 (21:34 +0000)
multiple flush may happen when handling errors. May be used in some cases.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/eina@67839 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/eina_value.c

index 97cab5b..a4c6428 100644 (file)
@@ -2249,7 +2249,11 @@ static Eina_Bool
 _eina_value_type_stringshare_flush(const Eina_Value_Type *type __UNUSED__, void *mem)
 {
    const char **tmem = mem;
-   if (*tmem) eina_stringshare_del(*tmem);
+   if (*tmem)
+     {
+        eina_stringshare_del(*tmem);
+        *tmem = NULL;
+     }
    return EINA_TRUE;
 }
 
@@ -2281,7 +2285,11 @@ static Eina_Bool
 _eina_value_type_string_flush(const Eina_Value_Type *type __UNUSED__, void *mem)
 {
    char **tmem = mem;
-   if (*tmem) free(*tmem);
+   if (*tmem)
+     {
+        free(*tmem);
+        *tmem = NULL;
+     }
    return EINA_TRUE;
 }
 
@@ -3573,6 +3581,8 @@ _eina_value_type_blob_flush(const Eina_Value_Type *type __UNUSED__, void *mem)
    Eina_Value_Blob *tmem = mem;
    if ((ops) && (ops->free))
      ops->free(ops, (void *)tmem->memory, tmem->size);
+   tmem->memory = NULL;
+   tmem->size = 0;
    return EINA_TRUE;
 }
 
@@ -4003,6 +4013,9 @@ _eina_value_type_struct_flush(const Eina_Value_Type *type __UNUSED__, void *mem)
    else
      free(tmem->memory);
 
+   tmem->memory = NULL;
+   tmem->desc = NULL;
+
    return ret;
 }