summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCedric BAIL <cedric@osg.samsung.com>2017-07-11 11:02:47 -0700
committerCedric BAIL <cedric@osg.samsung.com>2017-07-11 11:02:47 -0700
commit3c62a5fab818286dfc23920211d00eb3a3f20938 (patch)
treee5c8d4e314d3f55ca881412928050fe8340d626c
parent231ef8142b7bd9882557a17960631aed1a57acc9 (diff)
downloadefl-3c62a5fab818286dfc23920211d00eb3a3f20938.tar.gz
ecore: properly cleanup callbacks of future/promise.
-rw-r--r--src/lib/ecore/efl_promise.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lib/ecore/efl_promise.c b/src/lib/ecore/efl_promise.c
index ac0d48d30c..f95e12940e 100644
--- a/src/lib/ecore/efl_promise.c
+++ b/src/lib/ecore/efl_promise.c
@@ -99,7 +99,8 @@ _efl_loop_future_success(Efl_Event *ev, Efl_Loop_Future_Data *pd, void *value)
chain_success.value = value;
pd->propagating++;
- EINA_INLIST_FREE(pd->callbacks, cb)
+ // This is done on purpose, we are using cb as a reminder to the head of the list
+ while ((cb = (void*) pd->callbacks))
{
// Remove callback early to avoid double execution while
// doing recursive call
@@ -136,7 +137,8 @@ _efl_loop_future_failure(Efl_Event *ev, Efl_Loop_Future_Data *pd, Eina_Error err
chain_fail.error = error;
pd->propagating++;
- EINA_INLIST_FREE(pd->callbacks, cb)
+ // This is done on purpose, we are using cb as a reminder to the head of the list
+ while ((cb = (void*) pd->callbacks))
{
// Remove callback early to avoid double execution while
// doing recursive call