From 7241f07f9c68ac4dddf0ab1ac2d09428df02eab1 Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Sun, 10 Nov 2013 09:43:57 +0100 Subject: [PATCH] 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 -- 2.7.4