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