discomfitor pushed a commit to branch enlightenment-0.18.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=9d88dcdcbec34818a0c0c2fe95be25c81bd73f33

commit 9d88dcdcbec34818a0c0c2fe95be25c81bd73f33
Author: Mike Blumenkrantz <[email protected]>
Date:   Thu Mar 13 11:18:14 2014 -0400

    bugfix: don't iterate with or access freed pointer in comp match dialog
    
    CID 1039740
---
 src/modules/conf_comp/e_mod_config_match.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/modules/conf_comp/e_mod_config_match.c 
b/src/modules/conf_comp/e_mod_config_match.c
index 18cb0e5..27577fa 100644
--- a/src/modules/conf_comp/e_mod_config_match.c
+++ b/src/modules/conf_comp/e_mod_config_match.c
@@ -196,15 +196,16 @@ _match_list_down(Eina_List **list, Match_Config *m)
    else *list = eina_list_append(*list, m);
 }
 
-static void
+static Eina_Bool
 _match_list_del(Eina_List **list, Match_Config *m)
 {
    Eina_List *l;
 
    l = eina_list_data_find_list(*list, m);
-   if (!l) return;
+   if (!l) return EINA_FALSE;
    *list = eina_list_remove_list(*list, l);
    _match_free(m);
+   return EINA_TRUE;
 }
 
 
@@ -663,10 +664,10 @@ _but_del(void *d1, void *d2)
    e_widget_ilist_remove_num(il, n);
    e_widget_ilist_thaw(il);
    e_widget_ilist_go(il);
-   _match_list_del(&(cfd->cfdata->popups), m);
-   _match_list_del(&(cfd->cfdata->borders), m);
-   _match_list_del(&(cfd->cfdata->overrides), m);
-   _match_list_del(&(cfd->cfdata->menus), m);
+   if (!_match_list_del(&(cfd->cfdata->popups), m))
+     if (!_match_list_del(&(cfd->cfdata->borders), m))
+       if (!_match_list_del(&(cfd->cfdata->overrides), m))
+         _match_list_del(&(cfd->cfdata->menus), m);
    cfd->cfdata->changed = 1;
    e_config_dialog_changed_set(cfd, 1);
 }

-- 


Reply via email to