cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=919829aa7d9f9302f30cc245f593793ba8753b46
commit 919829aa7d9f9302f30cc245f593793ba8753b46 Author: Cedric Bail <[email protected]> Date: Tue Oct 25 15:21:51 2016 -0700 ecore: properly handle promise failure when each member has not been fulfilled yet. --- src/lib/ecore/efl_promise.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/lib/ecore/efl_promise.c b/src/lib/ecore/efl_promise.c index 8cbde0e..c5ff17c 100644 --- a/src/lib/ecore/efl_promise.c +++ b/src/lib/ecore/efl_promise.c @@ -39,6 +39,7 @@ struct _Efl_Promise_Data static void _efl_promise_msg_free(Efl_Promise_Msg *msg) { + if (!msg) return ; if (msg->free_cb) msg->free_cb(msg->value); free(msg); @@ -737,8 +738,9 @@ _efl_promise_all_free(Efl_Promise_All *all) EINA_ARRAY_ITER_NEXT(&all->members, i, fa, iterator) { - EINA_REFCOUNT_UNREF(fa->d) - _efl_promise_msg_free(fa->d); + if (fa->d) + EINA_REFCOUNT_UNREF(fa->d) + _efl_promise_msg_free(fa->d); } efl_del(all->promise); all->promise = NULL; --
