tasn pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=0730152deb57749b78d378213bf2f7565390bb6e

commit 0730152deb57749b78d378213bf2f7565390bb6e
Author: Tom Hacohen <t...@stosb.com>
Date:   Fri Apr 29 13:20:21 2016 +0100

    Eo keyed data: Unify node cleanup code.
---
 src/lib/eo/eo_base_class.c | 40 ++++++++++++++--------------------------
 1 file changed, 14 insertions(+), 26 deletions(-)

diff --git a/src/lib/eo/eo_base_class.c b/src/lib/eo/eo_base_class.c
index 75967bf..c397c82 100644
--- a/src/lib/eo/eo_base_class.c
+++ b/src/lib/eo/eo_base_class.c
@@ -91,6 +91,17 @@ _eo_base_extension_noneed(Eo_Base_Data *pd)
 static void
 _eo_generic_data_node_free(Eo_Generic_Data_Node *node)
 {
+   switch (node->d_type)
+     {
+      case DATA_OBJ:
+         eo_unref(node->d.obj);
+         break;
+      case DATA_VAL:
+         eina_value_free(node->d.val);
+         break;
+      case DATA_PTR:
+         break;
+     }
    eina_stringshare_del(node->key);
    free(node);
 }
@@ -102,16 +113,13 @@ _eo_generic_data_del_all(Eo *obj EINA_UNUSED, 
Eo_Base_Data *pd)
    Eo_Base_Extension *ext = pd->ext;
 
    if (!ext) return;
+
    while (ext->generic_data)
      {
         node = (Eo_Generic_Data_Node *)ext->generic_data;
         ext->generic_data = eina_inlist_remove(ext->generic_data,
-                                               EINA_INLIST_GET(node));
-        if (node->d_type == DATA_OBJ)
-          {
-             eo_unref(node->d.obj);
-          }
-        else if (node->d_type == DATA_VAL) eina_value_free(node->d.val);
+              EINA_INLIST_GET(node));
+
         _eo_generic_data_node_free(node);
      }
 }
@@ -133,11 +141,6 @@ _eo_base_key_data_set(Eo *obj EINA_UNUSED, Eo_Base_Data 
*pd, const char *key, co
                      return;
                   ext->generic_data = eina_inlist_remove
                     (ext->generic_data, EINA_INLIST_GET(node));
-                  if (node->d_type == DATA_OBJ)
-                    {
-                       eo_unref(node->d.obj);
-                    }
-                  else if (node->d_type == DATA_VAL) 
eina_value_free(node->d.val);
                   _eo_generic_data_node_free(node);
                   break;
                }
@@ -201,11 +204,6 @@ _eo_base_key_del(Eo *obj EINA_UNUSED, Eo_Base_Data *pd, 
const char *key)
           {
              ext->generic_data = eina_inlist_remove
                (ext->generic_data, EINA_INLIST_GET(node));
-             if (node->d_type == DATA_OBJ)
-               {
-                  eo_unref(node->d.obj);
-               }
-             else if (node->d_type == DATA_VAL) eina_value_free(node->d.val);
              _eo_generic_data_node_free(node);
              return;
           }
@@ -228,11 +226,6 @@ _eo_base_key_obj_set(Eo *obj EINA_UNUSED, Eo_Base_Data 
*pd, const char *key, Eo
                   if ((node->d_type == DATA_OBJ) && (node->d.obj == objdata)) 
return;
                   ext->generic_data = eina_inlist_remove
                     (ext->generic_data, EINA_INLIST_GET(node));
-                  if (node->d_type == DATA_OBJ)
-                    {
-                       eo_unref(node->d.obj);
-                    }
-                  else if (node->d_type == DATA_VAL) 
eina_value_free(node->d.val);
                   _eo_generic_data_node_free(node);
                   break;
                }
@@ -299,11 +292,6 @@ _eo_base_key_value_set(Eo *obj EINA_UNUSED, Eo_Base_Data 
*pd, const char *key, E
                   if ((node->d_type == DATA_VAL) && (node->d.val == value)) 
return;
                   ext->generic_data = eina_inlist_remove
                     (ext->generic_data, EINA_INLIST_GET(node));
-                  if (node->d_type == DATA_OBJ)
-                    {
-                       eo_unref(node->d.obj);
-                    }
-                  else if (node->d_type == DATA_VAL) 
eina_value_free(node->d.val);
                   _eo_generic_data_node_free(node);
                   break;
                }

-- 


Reply via email to