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

-- 


Reply via email to