raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=0dc74232a1b7d582652528e471cebfd44c75d58e

commit 0dc74232a1b7d582652528e471cebfd44c75d58e
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Sun Jul 3 14:01:04 2016 +0900

    edje signal cb - dont delete already deleted signals
    
    let's assume you registered a callback twice with the same ptr data
    and same func and same sig/src... if you delete it once you're ok.
    delete twice... and you re-delete the first one (just makging it for
    delete_me). this fixes this corner case
    
    @fix
---
 src/lib/edje/edje_signal.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/lib/edje/edje_signal.c b/src/lib/edje/edje_signal.c
index 88c0f1d..12f22ef 100644
--- a/src/lib/edje/edje_signal.c
+++ b/src/lib/edje/edje_signal.c
@@ -316,7 +316,8 @@ _edje_signal_callback_disable(const 
Edje_Signal_Callback_Group *cgp,
         if (sig == gp->matches->matches[i].signal &&
             src == gp->matches->matches[i].source &&
             func == gp->matches->matches[i].func &&
-            gp->custom_data[i] == data)
+            gp->custom_data[i] == data &&
+            !gp->flags[i].delete_me)
           {
              gp->flags[i].delete_me = EINA_TRUE;
              return gp->custom_data[i];
@@ -329,7 +330,8 @@ _edje_signal_callback_disable(const 
Edje_Signal_Callback_Group *cgp,
           {
              if (sig == gp->matches->matches[i].signal &&
                  src == gp->matches->matches[i].source &&
-                 func == gp->matches->matches[i].func)
+                 func == gp->matches->matches[i].func &&
+                 !gp->flags[i].delete_me)
                {
                   gp->flags[i].delete_me = EINA_TRUE;
                   return gp->custom_data[i];

-- 


Reply via email to