diff options
author | Cedric BAIL <cedric@osg.samsung.com> | 2017-07-11 11:02:47 -0700 |
---|---|---|
committer | Cedric BAIL <cedric@osg.samsung.com> | 2017-07-11 11:02:47 -0700 |
commit | 3c62a5fab818286dfc23920211d00eb3a3f20938 (patch) | |
tree | e5c8d4e314d3f55ca881412928050fe8340d626c | |
parent | 231ef8142b7bd9882557a17960631aed1a57acc9 (diff) | |
download | efl-3c62a5fab818286dfc23920211d00eb3a3f20938.tar.gz |
ecore: properly cleanup callbacks of future/promise.
-rw-r--r-- | src/lib/ecore/efl_promise.c | 6 |
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 |