cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=b8cf656bd38c19b48814788afebdd3432180e4fa
commit b8cf656bd38c19b48814788afebdd3432180e4fa Author: Cedric BAIL <ced...@osg.samsung.com> Date: Mon May 7 09:46:42 2018 -0700 eina: actually it make more sense to do the check for EINA_VALUE_EMPTY inside eina_value_type_get. --- src/lib/eina/eina_inline_value.x | 7 ++++++- src/lib/eina/eina_promise.c | 3 +-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/lib/eina/eina_inline_value.x b/src/lib/eina/eina_inline_value.x index 93ccfbbed3..0bc268af52 100644 --- a/src/lib/eina/eina_inline_value.x +++ b/src/lib/eina/eina_inline_value.x @@ -538,7 +538,12 @@ eina_value_pget(const Eina_Value *value, void *ptr) static inline const Eina_Value_Type * eina_value_type_get(const Eina_Value *value) { - EINA_VALUE_TYPE_CHECK_RETURN_VAL(value, NULL); + const Eina_Value empty = EINA_VALUE_EMPTY; + + EINA_SAFETY_ON_NULL_RETURN_VAL(value, NULL); + // Trigger warning if the type is NULL, but the value is != EINA_VALUE_EMTPY. + if (memcmp(value, &empty, sizeof (Eina_Value))) + EINA_SAFETY_ON_FALSE_RETURN_VAL(eina_value_type_check(value->type), NULL); return value->type; } diff --git a/src/lib/eina/eina_promise.c b/src/lib/eina/eina_promise.c index a9fdf923cd..516ef5c6b2 100644 --- a/src/lib/eina/eina_promise.c +++ b/src/lib/eina/eina_promise.c @@ -644,8 +644,7 @@ _future_proxy(void *data, const Eina_Value v, { Eina_Value copy = EINA_VALUE_EMPTY; - if (memcmp(©, &v, sizeof (Eina_Value)) && - eina_value_type_get(&v) == EINA_VALUE_TYPE_ERROR) return v; + if (eina_value_type_get(&v) == EINA_VALUE_TYPE_ERROR) return v; //We're in a safe context (from mainloop), so we can avoid scheduling a new dispatch if (!v.type || !memcmp(&v, ©, sizeof (Eina_Value))) copy = v; else if (!eina_value_copy(&v, ©)) --