static Eina_Lock _eina_value_inner_mps_lock;
static char *_eina_value_mp_choice = NULL;
static int _eina_value_log_dom = -1;
+static const Eina_Value _eina_value_empty = EINA_VALUE_EMPTY;
#ifdef ERR
#undef ERR
{
Eina_Value *dst = mem;
Eina_Value src = va_arg(args, Eina_Value);
+
return eina_value_copy(&src, dst);
}
{
Eina_Value *dst = mem;
const Eina_Value *src = ptr;
+
return eina_value_copy(src, dst);
}
if (!value) return NULL;
if (!type)
{
- const Eina_Value empty = EINA_VALUE_EMPTY;
-
- memcpy(value, &empty, sizeof (empty));
+ memcpy(value, &_eina_value_empty, sizeof (_eina_value_empty));
return value;
}
if (!eina_value_setup(value, type))
Eina_Bool ret;
EINA_SAFETY_ON_NULL_RETURN_VAL(value, EINA_FALSE);
+
+ if (!memcmp(value, &_eina_value_empty, sizeof (Eina_Value)))
+ {
+ memcpy(copy, &_eina_value_empty, sizeof (Eina_Value));
+ return EINA_TRUE;
+ }
+
EINA_SAFETY_ON_FALSE_RETURN_VAL(eina_value_type_check(value->type),
EINA_FALSE);
EINA_SAFETY_ON_NULL_RETURN_VAL(copy, EINA_FALSE);