summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCedric BAIL <cedric@efl.so>2013-11-10 09:43:57 +0100
committerCedric BAIL <cedric@efl.so>2013-11-10 09:43:57 +0100
commit7241f07f9c68ac4dddf0ab1ac2d09428df02eab1 (patch)
tree5af92f3a80081343b106e036234cd5fac85063be /src
parentaaae3830f098ba589d9ff801ee1c63923443f18d (diff)
eina: let's copy va_list when passing it around to be more portable.
NOTE: EINA_VALUE_TYPE_DISPATCH_RETURN macro is a bit weird, it does use external variable not passed to the macro and half of the parameter given to it are just ignored...
Diffstat (limited to 'src')
-rw-r--r--src/lib/eina/eina_inline_value.x9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/lib/eina/eina_inline_value.x b/src/lib/eina/eina_inline_value.x
index 1021dca11d..15220c960c 100644
--- a/src/lib/eina/eina_inline_value.x
+++ b/src/lib/eina/eina_inline_value.x
@@ -331,6 +331,8 @@ eina_value_vset(Eina_Value *value, va_list args)
331{ 331{
332 const Eina_Value_Type *type; 332 const Eina_Value_Type *type;
333 void *mem; 333 void *mem;
334 va_list args_copy;
335 Eina_Bool r = EINA_FALSE;
334 336
335 EINA_VALUE_TYPE_CHECK_RETURN_VAL(value, EINA_FALSE); 337 EINA_VALUE_TYPE_CHECK_RETURN_VAL(value, EINA_FALSE);
336 338
@@ -434,8 +436,11 @@ eina_value_vset(Eina_Value *value, va_list args)
434 } 436 }
435#endif 437#endif
436 438
437 EINA_VALUE_TYPE_DISPATCH_RETURN(value, vset, 0, 439 va_copy(args_copy, args);
438 EINA_FALSE, mem, args); 440 if (type->vset) r = type->vset(type, mem, args_copy);
441 va_end(args_copy);
442
443 return r;
439} 444}
440 445
441static inline Eina_Bool 446static inline Eina_Bool