zehortigoza pushed a commit to branch master.

commit bca31e4ad1029e4935c1ae552bf30808c715b63d
Author: José Roberto de Souza <[email protected]>
Date:   Thu Jul 18 14:09:19 2013 -0300

    edje: Correctly set match flag in _edje_signal_callback_move_last()
    
    This was causing some callback be removed instead a deleted callback.
    Also was leaking stringshare and decreasing matches_count.
    
    SPANK SPANK SPANK cedric
---
 src/lib/edje/edje_signal.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/lib/edje/edje_signal.c b/src/lib/edje/edje_signal.c
index b178371..1e61945 100644
--- a/src/lib/edje/edje_signal.c
+++ b/src/lib/edje/edje_signal.c
@@ -384,14 +384,23 @@ 
_edje_signal_callback_move_last(Edje_Signal_Callback_Group *gp,
      {
         if (!(gp->flags[j >> 1] & (_DELETE_ME << ((j & 1) * 4))))
           {
+             Eina_Bool flag_neighbor_i, flag_j;
+
+             _edje_signal_callback_unset(gp, i);
+
              m->matches[i].signal = m->matches[j].signal;
              m->matches[i].source = m->matches[j].source;
              m->matches[i].func = m->matches[j].func;
-             gp->flags[i] = (gp->flags[i >> 1] & (0xF << (((i & 1) ^ 1) * 4))) 
|
-               (gp->flags[j >> 1] & (0xF << (((j & 1) * 4))));
+
+             flag_j = gp->flags[j >> 1] >> ((j & 1) * 4);
+             flag_neighbor_i = gp->flags[i >> 1] >> ((!(j & 1)) * 4);
+
+             if (i & 1)
+                gp->flags[i >> 1] = flag_neighbor_i | (flag_j << 4);
+             else
+                gp->flags[i >> 1] = flag_j | (flag_neighbor_i << 4);
              return;
           }
-        --m->matches_count;
      }
 }
 

-- 

------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk

Reply via email to