ecore: properly handle promise failure when each member has not been fulfilled yet.

This commit is contained in:
Cedric Bail 2016-10-25 15:21:51 -07:00
parent baf2187d55
commit 919829aa7d
1 changed files with 4 additions and 2 deletions

View File

@ -39,6 +39,7 @@ struct _Efl_Promise_Data
static void static void
_efl_promise_msg_free(Efl_Promise_Msg *msg) _efl_promise_msg_free(Efl_Promise_Msg *msg)
{ {
if (!msg) return ;
if (msg->free_cb) if (msg->free_cb)
msg->free_cb(msg->value); msg->free_cb(msg->value);
free(msg); free(msg);
@ -737,8 +738,9 @@ _efl_promise_all_free(Efl_Promise_All *all)
EINA_ARRAY_ITER_NEXT(&all->members, i, fa, iterator) EINA_ARRAY_ITER_NEXT(&all->members, i, fa, iterator)
{ {
EINA_REFCOUNT_UNREF(fa->d) if (fa->d)
_efl_promise_msg_free(fa->d); EINA_REFCOUNT_UNREF(fa->d)
_efl_promise_msg_free(fa->d);
} }
efl_del(all->promise); efl_del(all->promise);
all->promise = NULL; all->promise = NULL;