cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=7241f07f9c68ac4dddf0ab1ac2d09428df02eab1
commit 7241f07f9c68ac4dddf0ab1ac2d09428df02eab1 Author: Cedric BAIL <[email protected]> Date: Sun Nov 10 09:43:57 2013 +0100 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... --- src/lib/eina/eina_inline_value.x | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/lib/eina/eina_inline_value.x b/src/lib/eina/eina_inline_value.x index 1021dca..15220c9 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) { const Eina_Value_Type *type; void *mem; + va_list args_copy; + Eina_Bool r = EINA_FALSE; EINA_VALUE_TYPE_CHECK_RETURN_VAL(value, EINA_FALSE); @@ -434,8 +436,11 @@ eina_value_vset(Eina_Value *value, va_list args) } #endif - EINA_VALUE_TYPE_DISPATCH_RETURN(value, vset, 0, - EINA_FALSE, mem, args); + va_copy(args_copy, args); + if (type->vset) r = type->vset(type, mem, args_copy); + va_end(args_copy); + + return r; } static inline Eina_Bool --
