felipealmeida pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=2e4765bc886e222f5f5d01a3a6ca6437ff10f7de

commit 2e4765bc886e222f5f5d01a3a6ca6437ff10f7de
Author: Felipe Magno de Almeida <[email protected]>
Date:   Fri Jun 3 21:42:23 2016 -0300

    eina: Fix EINA_MAGIC and eina_promise_then NULL check
---
 src/lib/eina/eina_promise.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/lib/eina/eina_promise.c b/src/lib/eina/eina_promise.c
index 8a207f7..e4adccd 100644
--- a/src/lib/eina/eina_promise.c
+++ b/src/lib/eina/eina_promise.c
@@ -538,6 +538,8 @@ eina_promise_value_add(int value_size)
    p->promise.vtable.unref = EINA_FUNC_PROMISE_UNREF(_eina_promise_unref);
    p->promise.vtable.value_size_get = 
EINA_FUNC_PROMISE_VALUE_SIZE_GET(_eina_promise_value_size_get);
    p->promise.vtable.buffer_get = 
EINA_FUNC_PROMISE_BUFFER_GET(_eina_promise_buffer_get);
+   EINA_MAGIC_SET(&p->promise.vtable, EINA_MAGIC_PROMISE);
+   
    p->promise.has_finished = p->promise.has_errored =
      p->promise.is_cancelled = p->promise.is_manual_then = 
p->promise.is_pointer = EINA_FALSE;
    p->promise.is_first_then = EINA_TRUE;
@@ -560,6 +562,7 @@ eina_promise_value_add(int value_size)
    p->owner_vtable.cancelled_is = 
EINA_FUNC_PROMISE_OWNER_CANCELLED_IS(_eina_promise_owner_cancelled_is);
    p->owner_vtable.progress = 
EINA_FUNC_PROMISE_OWNER_PROGRESS(_eina_promise_owner_progress);
    p->owner_vtable.progress_notify = 
EINA_FUNC_PROMISE_OWNER_PROGRESS_NOTIFY(_eina_promise_owner_progress_notify);
+   EINA_MAGIC_SET(&p->owner_vtable, EINA_MAGIC_PROMISE_OWNER);
 
    return &p->owner_vtable;
 }
@@ -581,6 +584,8 @@ eina_promise_add()
    p->promise.vtable.unref = EINA_FUNC_PROMISE_UNREF(_eina_promise_unref);
    p->promise.vtable.value_size_get = 
EINA_FUNC_PROMISE_VALUE_SIZE_GET(_eina_promise_value_size_get);
    p->promise.vtable.buffer_get = 
EINA_FUNC_PROMISE_BUFFER_GET(_eina_promise_buffer_get);
+   EINA_MAGIC_SET(&p->promise.vtable, EINA_MAGIC_PROMISE);
+
    p->promise.has_finished = p->promise.has_errored =
      p->promise.is_cancelled = p->promise.is_manual_then = EINA_FALSE;
    p->promise.is_first_then = p->promise.is_pointer = EINA_TRUE;
@@ -603,7 +608,8 @@ eina_promise_add()
    p->owner_vtable.cancelled_is = 
EINA_FUNC_PROMISE_OWNER_CANCELLED_IS(_eina_promise_owner_cancelled_is);
    p->owner_vtable.progress = 
EINA_FUNC_PROMISE_OWNER_PROGRESS(_eina_promise_owner_progress);
    p->owner_vtable.progress_notify = 
EINA_FUNC_PROMISE_OWNER_PROGRESS_NOTIFY(_eina_promise_owner_progress_notify);
-
+   EINA_MAGIC_SET(&p->owner_vtable, EINA_MAGIC_PROMISE_OWNER);
+   
    return &p->owner_vtable;
 }
 
@@ -881,7 +887,13 @@ eina_promise_then(Eina_Promise* promise, Eina_Promise_Cb 
callback,
 {
    if(!promise)
      {
-        error_cb(data, EINA_ERROR_PROMISE_NULL);
+        if(!error_cb)
+          {
+            ERR("eina_promise_the with NULL promise and no error callback.");
+            eina_error_set(EINA_ERROR_PROMISE_NULL);
+          }
+        else
+          error_cb(data, EINA_ERROR_PROMISE_NULL);
         return;
      }
    else

-- 


Reply via email to