Hi folks,

Here's a patch against e16.6-pre4.  This patch mainly fixes
small memory leaks.

Thanks.

-- 
Hiroaki Yoshida <[EMAIL PROTECTED]>
diff -Naur enlightenment-0.16.6/src/atoms.c enlightenment-0.16.6-fixed/src/atoms.c
--- enlightenment-0.16.6/src/atoms.c    Sat Jun 21 17:45:05 2003
+++ enlightenment-0.16.6-fixed/src/atoms.c      Mon Jul  7 12:27:40 2003
@@ -71,6 +71,8 @@
        XFree(retval);
        EDBUG_RETURN(data);
      }
+   if (retval)
+      XFree(retval);
    EDBUG_RETURN(NULL);
 
 }
@@ -107,6 +109,8 @@
        (disp, win, atom, 0, 1, False, atom, &type_ret, &fmt_ret, &nitems_ret,
        &bytes_after_ret, (unsigned char **)&data) != Success || !data)
      {
+       if (data)
+          XFree(data);
        EDBUG_RETURN(NULL);
      }
    if (atom != AnyPropertyType && atom != type_ret)
diff -Naur enlightenment-0.16.6/src/config.c enlightenment-0.16.6-fixed/src/config.c
--- enlightenment-0.16.6/src/config.c   Sat Jun 21 17:45:05 2003
+++ enlightenment-0.16.6-fixed/src/config.c     Mon Jul  7 12:05:49 2003
@@ -3364,6 +3364,8 @@
 
    if (!ppfile)
      {
+       if (file)
+          Efree(file);
        if (notheme)
           file = FindNoThemeFile(f);
        else
diff -Naur enlightenment-0.16.6/src/dialog.c enlightenment-0.16.6-fixed/src/dialog.c
--- enlightenment-0.16.6/src/dialog.c   Sat Jun 21 17:45:05 2003
+++ enlightenment-0.16.6-fixed/src/dialog.c     Mon Jul  7 12:43:32 2003
@@ -1748,9 +1748,9 @@
 void
 DialogItemRadioButtonSetText(DItem * di, char *text)
 {
-   if (di->item.check_button.text)
-      Efree(di->item.check_button.text);
-   di->item.check_button.text = duplicate(text);
+   if (di->item.radio_button.text)
+      Efree(di->item.radio_button.text);
+   di->item.radio_button.text = duplicate(text);
 }
 
 void
@@ -1920,12 +1920,12 @@
    switch (di->type)
      {
      case DITEM_BUTTON:
-       if (di->item.text.text)
-          Efree(di->item.text.text);
+       if (di->item.button.text)
+          Efree(di->item.button.text);
        break;
      case DITEM_CHECKBUTTON:
-       if (di->item.text.text)
-          Efree(di->item.text.text);
+       if (di->item.check_button.text)
+          Efree(di->item.check_button.text);
        break;
      case DITEM_TEXT:
        if (di->item.text.text)
@@ -1934,6 +1934,10 @@
      case DITEM_IMAGE:
        if (di->item.image.image)
           Efree(di->item.image.image);
+       break;
+     case DITEM_RADIOBUTTON:
+       if (di->item.radio_button.text)
+          Efree(di->item.radio_button.text);
        break;
      case DITEM_SLIDER:
        if (di->item.slider.ic_base)
diff -Naur enlightenment-0.16.6/src/evhandlers.c 
enlightenment-0.16.6-fixed/src/evhandlers.c
--- enlightenment-0.16.6/src/evhandlers.c       Sat Jun 21 17:45:05 2003
+++ enlightenment-0.16.6-fixed/src/evhandlers.c Mon Jul  7 12:49:51 2003
@@ -958,6 +958,8 @@
                       MoveEwin(gwins[i], x, y);
                    }
               }
+            if (gwins)
+               Efree(gwins);
          }
      }
    /* dialogs? */
@@ -1940,6 +1942,9 @@
                gwin_py[i] = gwins[i]->y;
             }
 
+          if (gwins)
+             Efree(gwins);
+
           if (ev->xbutton.window == p->hi_win)
             {
                int                 hx, hy;
@@ -2463,9 +2468,6 @@
                       int                 wx, wy, base_x = 0, base_y = 0;
                       Window              dw;
 
-                      gwins =
-                         ListWinGroupMembersForEwin(p->hi_ewin, ACTION_MOVE,
-                                                    mode.nogroup, &num);
                       pp = ewin->pager;
                       cx = desks.desk[pp->desktop].current_area_x;
                       cy = desks.desk[pp->desktop].current_area_y;
@@ -2523,6 +2525,8 @@
                                             ((root.h * ay) + wy +
                                              (gwin_py[i] - base_y)) % root.h);
                              }
+                           if (gwins)
+                              Efree(gwins);
                         }
                    }
                  else if ((ewin) && (ewin->ibox)
@@ -2571,6 +2575,8 @@
                                 ICCCM_Iconify(gwins[i]);
                              }
                         }
+                      if (gwins)
+                         Efree(gwins);
                    }
                  else
                    {
@@ -2609,6 +2615,8 @@
                            if (!gwins[i]->sticky)
                               MoveEwinToDesktop(gwins[i], ndesk);
                         }
+                      if (gwins)
+                         Efree(gwins);
                    }
               }
             else if ((ev->xbutton.x >= 0) && (ev->xbutton.y >= 0)
diff -Naur enlightenment-0.16.6/src/menus.c enlightenment-0.16.6-fixed/src/menus.c
--- enlightenment-0.16.6/src/menus.c    Sat Jun 21 17:45:05 2003
+++ enlightenment-0.16.6-fixed/src/menus.c      Mon Jul  7 12:50:17 2003
@@ -567,6 +567,8 @@
    RemoveItem((char *)m, m->win, LIST_FINDBY_POINTER, LIST_TYPE_MENU);
    if (m->name)
       Efree(m->name);
+   if (m->title)
+      Efree(m->title);
 
    for (i = 0; i < m->num; i++)
      {
@@ -1551,10 +1553,6 @@
                            mi = CreateMenuItem(txt, icc, ACTION_EXEC, params,
                                                NULL);
                            AddItemToMenu(m, mi);
-                           if (txt)
-                              Efree(txt);
-                           if (params)
-                              Efree(params);
                         }
                    }
                  else if ((act) && (!strcmp(act, "menu")) && (params))
@@ -1569,20 +1567,18 @@
                            mi = CreateMenuItem(txt, icc, 0, NULL, mm);
                            AddItemToMenu(m, mi);
                         }
-                      if (txt)
-                         Efree(txt);
                    }
                  else
                    {
                       mi = CreateMenuItem(txt, icc, 0, NULL, NULL);
                       AddItemToMenu(m, mi);
-                      if (txt)
-                         Efree(txt);
-                      if (params)
-                         Efree(params);
                    }
+                 if (txt)
+                    Efree(txt);
                  if (act)
                     Efree(act);
+                 if (params)
+                    Efree(params);
               }
          }
      }
diff -Naur enlightenment-0.16.6/src/setup.c enlightenment-0.16.6-fixed/src/setup.c
--- enlightenment-0.16.6/src/setup.c    Sat Jun 21 17:45:06 2003
+++ enlightenment-0.16.6-fixed/src/setup.c      Mon Jul  7 13:03:32 2003
@@ -446,7 +446,7 @@
       mask_mod_combos[7] = LockMask | numlock_mask | scrollock_mask;
 
       if (mod)
-        XFree(mod);
+        XFreeModifiermap(mod);
    }
    /* Now we're going to set a bunch of default settings in E - in case we
     * don't ever get to load a config file for some odd reason.
diff -Naur enlightenment-0.16.6/src/theme.c enlightenment-0.16.6-fixed/src/theme.c
--- enlightenment-0.16.6/src/theme.c    Sat Jun 21 17:45:06 2003
+++ enlightenment-0.16.6-fixed/src/theme.c      Mon Jul  7 13:03:15 2003
@@ -131,6 +131,10 @@
       def = def2;
    else if ((!def) && (!def2))
       fprintf(stderr, "errrrrrrrr no default theme?\n");
+
+   if (def)
+      Efree(def);
+
    *number = count;
    return list;
 }

Reply via email to