Enlightenment CVS committal

Author  : onefang
Project : e17
Module  : libs/ecore

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


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


Log Message:
I'm reverting these so that menu generation doesn't crash anymore.

===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/Ecore_Desktop.h,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -3 -r1.34 -r1.35
--- Ecore_Desktop.h     24 Sep 2006 12:26:09 -0000      1.34
+++ Ecore_Desktop.h     24 Sep 2006 21:21:24 -0000      1.35
@@ -131,10 +131,8 @@
 {
    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. */
 };
 
@@ -247,8 +245,7 @@
                                                    Ecore_Desktop_Tree *
                                                    element);
    Ecore_Desktop_Tree *ecore_desktop_tree_add_hash(Ecore_Desktop_Tree * tree,
-                                                  Ecore_Hash * element,
-                                                  int free);
+                                                  Ecore_Hash * element);
    void                ecore_desktop_tree_remove(Ecore_Desktop_Tree * tree,
                                                 int element);
    int                 ecore_desktop_tree_exist(Ecore_Desktop_Tree * tree,
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/ecore_desktop_menu.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- ecore_desktop_menu.c        24 Sep 2006 12:55:44 -0000      1.25
+++ ecore_desktop_menu.c        24 Sep 2006 21:21:24 -0000      1.26
@@ -1,7 +1,4 @@
 /*
- * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
- */
-/*
  * This conforms with the freedesktop.org Desktop Menu Specification version 
0.92
  *
  * This is gonna be repetative and slow.  The idea is to first get it to 
correctly
@@ -150,7 +147,8 @@
             /* create the .desktop and order files from the menu */
             ecore_desktop_tree_foreach(menus, 0, _ecore_desktop_menu_make_apps,
                                        func);
-            ecore_desktop_tree_del(menus);
+// FIXME: Can't free this just yet, causes major memory corruption.
+//               ecore_desktop_tree_del(menus);
          }
        free(menu_file);
      }
@@ -269,8 +267,6 @@
 
        if (oops == 0)
          {
-#if 1
-            /* FIXME: Somewhere in this code mem leaks. */
             /* Get on with it. */
             ecore_desktop_tree_foreach(menu_xml, 0, _ecore_desktop_menu_unxml,
                                        &data);
@@ -304,7 +300,6 @@
                  printf("\n\n");
 #endif
               }
-#endif
          }
      }
    else
@@ -313,14 +308,14 @@
    if (oops)
      {
        E_FN_DEL(ecore_desktop_tree_del, (menu_xml));
+       if (level == 0)
+         {
+            E_FN_DEL(ecore_desktop_tree_del, (merge_stack));
+         }
+       E_FREE(data.path);
+       E_FREE(data.base);
+       E_FN_DEL(ecore_desktop_tree_del, (data.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);
-   E_FREE(data.base);
 
    return menu_xml;
 }
@@ -339,7 +334,6 @@
             tree->elements[element].type =
                ECORE_DESKTOP_TREE_ELEMENT_TYPE_NULL;
             tree->elements[element].element = NULL;
-            tree->elements[element].free = 0;
          }
        else if (strcmp((char *)tree->elements[element].element, "<Menu") == 0)
          {
@@ -355,11 +349,9 @@
 
                  flags = (char *)menu->elements[0].element;
                  flags += 7;
-                 /* FIXME: Should this be here? It is done again at the end */
                  tree->elements[element].element = menu;
                  tree->elements[element].type =
                     ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE;
-                 tree->elements[element].free = 1;
                  for (i = element + 1; i < tree->size; i++)
                    {
                       int                 result = 0;
@@ -374,7 +366,6 @@
                                 tree->elements[i].type =
                                    ECORE_DESKTOP_TREE_ELEMENT_TYPE_NULL;
                                 tree->elements[i].element = NULL;
-                                tree->elements[i].free = 0;
                              }
                            else
                               if (strcmp
@@ -612,7 +603,6 @@
                       tree->elements[element].element = menu;
                       tree->elements[element].type =
                          ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE;
-                      tree->elements[element].free = 1;
                    }
               }
          }
@@ -638,9 +628,9 @@
        ecore_hash_set_free_value(apps, free);
        ecore_desktop_tree_extend(menu, "<MENU <    > <> <>");
        ecore_desktop_tree_extend(menu, "<MENU_PATH ");
-       ecore_desktop_tree_add_hash(menu, pool, 1);
+       ecore_desktop_tree_add_hash(menu, pool);
        ecore_desktop_tree_add_child(menu, rules);
-       ecore_desktop_tree_add_hash(menu, apps, 1);
+       ecore_desktop_tree_add_hash(menu, apps);
      }
    else
      {
@@ -1474,9 +1464,9 @@
                    {
                       while (unxml_data->stack->size < level)
                          ecore_desktop_tree_add_hash(unxml_data->stack,
-                                                     generate_data.pool, 0);
+                                                     generate_data.pool);
                       ecore_desktop_tree_add_hash(unxml_data->stack,
-                                                  generate_data.pool, 0);
+                                                  generate_data.pool);
                    }
                  else
                    {
@@ -1484,7 +1474,6 @@
                          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--)
                    {
@@ -1594,7 +1583,7 @@
             desktop->allocated = TRUE;
             if (generate_data->include)
               {
-                 ecore_hash_set(generate_data->apps, strdup(key), strdup(app));
+                 ecore_hash_set(generate_data->apps, key, strdup(app));
 #ifdef DEBUG
                  printf("INCLUDING %s%s - %s\n",
                         ((generate_data->unallocated) ? "UNALLOCATED " : ""),
===================================================================
RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_desktop/ecore_desktop_tree.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- ecore_desktop_tree.c        24 Sep 2006 12:26:09 -0000      1.6
+++ ecore_desktop_tree.c        24 Sep 2006 21:21:24 -0000      1.7
@@ -1,6 +1,3 @@
-/*
- * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
- */
 #include <sys/types.h>
 
 #include "Ecore_Desktop.h"
@@ -45,12 +42,10 @@
    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;
 }
@@ -64,8 +59,7 @@
                                              1) *
                                             sizeof
                                             (Ecore_Desktop_Tree_Element));
-   tree->elements[tree->size].element = strdup(element);
-   tree->elements[tree->size].free = 1;
+   tree->elements[tree->size].element = element;
    tree->elements[tree->size++].type = ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING;
    return tree;
 }
@@ -73,14 +67,11 @@
 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;
 }
@@ -88,17 +79,13 @@
 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)
@@ -116,14 +103,11 @@
      {
        tree->elements[i].element = tree->elements[i - 1].element;
        tree->elements[i].type = tree->elements[i - 1].type;
-       tree->elements[i].free = tree->elements[i - 1].free;
      }
    tree->elements[before].element = element;
    tree->elements[before].type = type;
-   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 *
@@ -146,18 +130,15 @@
          {
             tree->elements[i].element = tree->elements[i - size].element;
             tree->elements[i].type = tree->elements[i - size].type;
-            tree->elements[i].free = tree->elements[i - size].free;
          }
        for (i = 0; i < size; i++)
          {
             tree->elements[before + i].element = element->elements[i].element;
             tree->elements[before + i].type = element->elements[i].type;
-            tree->elements[before + i].free = element->elements[i].free;
          }
      }
 
    /* Careful, this might screw up the freeing order if that is important. */
-#if 0
    size = element->buffers_size;
    if (size)
      {
@@ -171,7 +152,6 @@
             }
 */
      }
-#endif
    return tree;
 }
 
@@ -186,14 +166,13 @@
                                             sizeof
                                             (Ecore_Desktop_Tree_Element));
    tree->elements[tree->size].element = element;
-   tree->elements[tree->size].free = 1;
    tree->elements[tree->size++].type = ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE;
    element->parent = tree;
    return tree;
 }
 
 Ecore_Desktop_Tree *
-ecore_desktop_tree_add_hash(Ecore_Desktop_Tree * tree, Ecore_Hash * element, 
int free)
+ecore_desktop_tree_add_hash(Ecore_Desktop_Tree * tree, Ecore_Hash * element)
 {
    tree->elements =
       (Ecore_Desktop_Tree_Element *) realloc(tree->elements,
@@ -202,8 +181,6 @@
                                             sizeof
                                             (Ecore_Desktop_Tree_Element));
    tree->elements[tree->size].element = element;
-   if (free) tree->elements[tree->size].free = 1;
-   else tree->elements[tree->size].free = 0;
    tree->elements[tree->size++].type = ECORE_DESKTOP_TREE_ELEMENT_TYPE_HASH;
    return tree;
 }
@@ -215,7 +192,6 @@
      {
        tree->elements[element].type = ECORE_DESKTOP_TREE_ELEMENT_TYPE_NULL;
        tree->elements[element].element = NULL;
-       tree->elements[element].free = 0;
      }
 }
 
@@ -276,10 +252,8 @@
                  moved = 1;
                  tree->elements[k].type = tree->elements[j].type;
                  tree->elements[k].element = tree->elements[j].element;
-                 tree->elements[k].free = tree->elements[j].free;
                  tree->elements[j].type = ECORE_DESKTOP_TREE_ELEMENT_TYPE_NULL;
                  tree->elements[j].element = NULL;
-                 tree->elements[j].free = 0;
                  j++;
                  k++;
               }
@@ -373,22 +347,16 @@
 
    for (i = tree->size - 1; i >= 0; i--)
      {
-       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);
-         }
+       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.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- ecore_desktop_xmlame.c      24 Sep 2006 12:26:09 -0000      1.8
+++ ecore_desktop_xmlame.c      24 Sep 2006 21:21:24 -0000      1.9
@@ -1,6 +1,3 @@
-/*
- * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
- */
 #include "Ecore_Desktop.h"
 #include "ecore_desktop_private.h"
 
@@ -64,7 +61,6 @@
             ecore_desktop_tree_extend(tree, file);
             _ecore_desktop_xmlame_parse(tree, buffer);
          }
-       free(buffer);
      }
    return tree;
 }
@@ -72,7 +68,7 @@
 static char        *
 _ecore_desktop_xmlame_parse(Ecore_Desktop_Tree * tree, char *buffer)
 {
-   while (*buffer != '\0')
+   do
      {
        char               *text;
 
@@ -90,7 +86,7 @@
 
             t = *buffer;
             *buffer = '\0';
-            ecore_desktop_tree_extend(tree, text);
+            ecore_desktop_tree_extend(tree, strdup(text));
             *buffer = t;
          }
        if (*buffer != '\0')
@@ -119,7 +115,7 @@
                    {           /* The beginning of an element. */
                       Ecore_Desktop_Tree *new_tree;
 
-                      new_tree = ecore_desktop_tree_new(NULL);
+                      new_tree = ecore_desktop_xmlame_new(NULL);
                       if (new_tree)
                         {
                            ecore_desktop_tree_add_child(tree, new_tree);
@@ -131,6 +127,7 @@
               }
          }
      }
+   while (*buffer != '\0');
 
    return buffer;
 }



-------------------------------------------------------------------------
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