$OpenBSD: patch-src_xmlrpc_builddecomp_c,v 1.2 2008/03/15 10:35:54 ajacoutot Exp $
--- src/xmlrpc_builddecomp.c.orig	Thu Mar 23 00:48:31 2006
+++ src/xmlrpc_builddecomp.c	Wed Jan 16 14:20:18 2008
@@ -26,11 +26,15 @@ typedef double va_double;
 ** tricky fashions. We don't why Python does this, but since we're
 ** abusing our va_list objects in a similar fashion, we'll copy them
 ** too. */
+#if defined(va_copy)
+#define VA_LIST_COPY(dest, src) va_copy(dest, src)
+#else
 #if VA_LIST_IS_ARRAY
 #define VA_LIST_COPY(dest,src) memcpy((dest), (src), sizeof(va_list))
 #else
 #define VA_LIST_COPY(dest,src) ((dest) = (src))
 #endif
+#endif
 
 /*=========================================================================
 **  Creating XML-RPC values.
@@ -460,6 +464,7 @@ xmlrpc_build_value_va(xmlrpc_env *    const envP,
         
         if (!envP->fault_occurred)
             XMLRPC_ASSERT_VALUE_OK(*valPP);
+	va_end(args_copy);
         
         *tailP = formatCursor;
     }
@@ -887,6 +892,7 @@ xmlrpc_decompose_value_va(xmlrpc_env *   const envP,
     if (!envP->fault_occurred) {
         XMLRPC_ASSERT(*format_copy == '\0');
     }
+    va_end(args_copy);
 }
 
 
@@ -925,6 +931,7 @@ xmlrpc_parse_value_va(xmlrpc_env *   const envP,
     if (!envP->fault_occurred) {
         XMLRPC_ASSERT(*format_copy == '\0');
     }
+    va_end(args_copy);
 }
 
 
