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