Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore_desktop


Modified Files:
        Ecore_Desktop.h ecore_desktop_icon.c ecore_desktop_menu.c 
        ecore_desktop_tree.c ecore_desktop_xmlame.c 


Log Message:
Fix mem leaks.
Is Ecore_Desktop_Tree buffers needed?

===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/Ecore_Desktop.h,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -3 -r1.33 -r1.34
--- Ecore_Desktop.h     24 Sep 2006 11:17:03 -0000      1.33
+++ Ecore_Desktop.h     24 Sep 2006 12:26:09 -0000      1.34
@@ -131,8 +131,10 @@
 {
    Ecore_Desktop_Tree_Element *elements;       /* An array of elements. */
    int                 size;   /* The size of the array. */
+#if 0
    char              **buffers;        /* An array of pointers to the bits of 
data. */
    int                 buffers_size;   /* The size of the array. */
+#endif
    Ecore_Desktop_Tree *parent; /* Parent if this is a child. */
 };
 
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/ecore_desktop_icon.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -3 -r1.35 -r1.36
--- ecore_desktop_icon.c        24 Sep 2006 09:28:21 -0000      1.35
+++ ecore_desktop_icon.c        24 Sep 2006 12:26:09 -0000      1.36
@@ -321,9 +321,13 @@
 {
    static int          loaded = 0;
    if (!loaded)
-      ecore_desktop_paths_file_find(ecore_desktop_paths_icons, "index.theme", 
2,
-                                   _ecore_desktop_icon_theme_list_add, NULL);
-   loaded = 1;
+     {
+       char *tmp;
+       tmp = ecore_desktop_paths_file_find(ecore_desktop_paths_icons, 
"index.theme", 2,
+                                           _ecore_desktop_icon_theme_list_add, 
NULL);
+       loaded = 1;
+       free(tmp);
+     }
    return icon_theme_cache;
 }
 
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/ecore_desktop_menu.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -3 -r1.22 -r1.23
--- ecore_desktop_menu.c        24 Sep 2006 11:17:03 -0000      1.22
+++ ecore_desktop_menu.c        24 Sep 2006 12:26:09 -0000      1.23
@@ -150,7 +150,6 @@
             /* create the .desktop and order files from the menu */
             ecore_desktop_tree_foreach(menus, 0, _ecore_desktop_menu_make_apps,
                                        func);
-// FIXME: Can't free this just yet, causes major memory corruption.
             ecore_desktop_tree_del(menus);
          }
        free(menu_file);
@@ -270,6 +269,7 @@
 
        if (oops == 0)
          {
+#if 1
             /* Get on with it. */
             ecore_desktop_tree_foreach(menu_xml, 0, _ecore_desktop_menu_unxml,
                                        &data);
@@ -303,6 +303,7 @@
                  printf("\n\n");
 #endif
               }
+#endif
          }
      }
    else
@@ -311,10 +312,10 @@
    if (oops)
      {
        E_FN_DEL(ecore_desktop_tree_del, (menu_xml));
-       if (level == 0)
-         {
-            E_FN_DEL(ecore_desktop_tree_del, (merge_stack));
-         }
+     }
+   if (level == 0)
+     {
+       E_FN_DEL(ecore_desktop_tree_del, (merge_stack));
      }
    E_FN_DEL(ecore_desktop_tree_del, (data.stack));
    E_FREE(data.path);
@@ -609,6 +610,7 @@
                       tree->elements[element].element = menu;
                       tree->elements[element].type =
                          ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE;
+                      tree->elements[element].free = 1;
                    }
               }
          }
@@ -1480,6 +1482,7 @@
                          ECORE_DESKTOP_TREE_ELEMENT_TYPE_HASH;
                       unxml_data->stack->elements[level].element =
                          generate_data.pool;
+                      unxml_data->stack->elements[level].free = 0;
                    }
                  for (i = level - 1; i >= 0; i--)
                    {
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/ecore_desktop_tree.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- ecore_desktop_tree.c        24 Sep 2006 11:17:03 -0000      1.5
+++ ecore_desktop_tree.c        24 Sep 2006 12:26:09 -0000      1.6
@@ -45,10 +45,12 @@
    tree = E_NEW(Ecore_Desktop_Tree, 1);
    if ((tree) && (buffer))
      {
+#if 0
        tree->buffers =
           (char **)realloc(tree->buffers,
                            (tree->buffers_size + 1) * sizeof(char *));
        tree->buffers[tree->buffers_size++] = strdup(buffer);
+#endif
      }
    return tree;
 }
@@ -63,7 +65,7 @@
                                             sizeof
                                             (Ecore_Desktop_Tree_Element));
    tree->elements[tree->size].element = strdup(element);
-   tree->elements[tree->size].free = 0;
+   tree->elements[tree->size].free = 1;
    tree->elements[tree->size++].type = ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING;
    return tree;
 }
@@ -71,11 +73,14 @@
 Ecore_Desktop_Tree *
 ecore_desktop_tree_extend(Ecore_Desktop_Tree * tree, char *element)
 {
+#if 0
    tree->buffers =
       (char **)realloc(tree->buffers,
                       (tree->buffers_size + 1) * sizeof(char *));
    tree->buffers[tree->buffers_size++] = strdup(element);
    tree = ecore_desktop_tree_add(tree, tree->buffers[tree->buffers_size - 1]);
+#endif
+   tree = ecore_desktop_tree_add(tree, element);
 
    return tree;
 }
@@ -83,13 +88,17 @@
 void
 ecore_desktop_tree_track(Ecore_Desktop_Tree * tree, void *element)
 {
+#if 0
    tree->buffers =
       (char **)realloc(tree->buffers,
                       (tree->buffers_size + 1) * sizeof(char *));
    tree->buffers[tree->buffers_size++] = element;
+#endif
 }
 
 /* OK, so we need an insert after all, and it falls into the dumb category. */
+/* FIXME: Needs to handle .free */
+#if 0
 Ecore_Desktop_Tree *
 ecore_desktop_tree_insert(Ecore_Desktop_Tree * tree, int before, void *element,
                          Ecore_Desktop_Tree_Element_Type type)
@@ -114,6 +123,7 @@
    tree->elements[before].free = free;
    return tree;
 }
+#endif
 
 /* OK, so we need a tree merge after all, and it falls into the dumb category. 
*/
 Ecore_Desktop_Tree *
@@ -147,6 +157,7 @@
      }
 
    /* Careful, this might screw up the freeing order if that is important. */
+#if 0
    size = element->buffers_size;
    if (size)
      {
@@ -160,6 +171,7 @@
             }
 */
      }
+#endif
    return tree;
 }
 
@@ -361,16 +373,22 @@
 
    for (i = tree->size - 1; i >= 0; i--)
      {
-       if (tree->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE)
-         ecore_desktop_tree_del((Ecore_Desktop_Tree *) 
tree->elements[i].element);
-       else if ((tree->elements[i].type == 
ECORE_DESKTOP_TREE_ELEMENT_TYPE_HASH) &&
-                (tree->elements[i].free))
-         ecore_hash_destroy((Ecore_Hash *) tree->elements[i].element);
+       if (tree->elements[i].free)
+         {
+            if (tree->elements[i].type == 
ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING)
+              free(tree->elements[i].element);
+            else if (tree->elements[i].type == 
ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE)
+              ecore_desktop_tree_del((Ecore_Desktop_Tree *) 
tree->elements[i].element);
+            else if (tree->elements[i].type == 
ECORE_DESKTOP_TREE_ELEMENT_TYPE_HASH)
+              ecore_hash_destroy((Ecore_Hash *) tree->elements[i].element);
+         }
      }
 
    E_FREE(tree->elements);
 
+#if 0
    for (i = tree->buffers_size - 1; i >= 0; i--)
       E_FREE(tree->buffers[i]);
+#endif
    E_FREE(tree);
 }
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/ecore_desktop_xmlame.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- ecore_desktop_xmlame.c      24 Sep 2006 09:28:21 -0000      1.7
+++ ecore_desktop_xmlame.c      24 Sep 2006 12:26:09 -0000      1.8
@@ -64,7 +64,7 @@
             ecore_desktop_tree_extend(tree, file);
             _ecore_desktop_xmlame_parse(tree, buffer);
          }
-       //FIXME: free(buffer);
+       free(buffer);
      }
    return tree;
 }
@@ -119,7 +119,7 @@
                    {           /* The beginning of an element. */
                       Ecore_Desktop_Tree *new_tree;
 
-                      new_tree = ecore_desktop_xmlame_new(NULL);
+                      new_tree = ecore_desktop_tree_new(NULL);
                       if (new_tree)
                         {
                            ecore_desktop_tree_add_child(tree, new_tree);



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to