* support/Util/dbuf_string.c: fixed for amd64
[fw/sdcc] / support / Util / dbuf_string.c
index a4dae9e341ece22e63548ec5da3939f7d42cfae7..5d38c2100147349d6ff9b7bd3ea31948b88a1ab5 100644 (file)
@@ -66,7 +66,11 @@ calc_result_length (const char *format, va_list args)
   int total_width = strlen (format) + 1;
   va_list ap;
 
-  memcpy (&ap, &args, sizeof (va_list));
+#ifdef va_copy
+  va_copy (ap, args);
+#else
+  memcpy ((PTR) &ap, (PTR) &args, sizeof (va_list));
+#endif
 
   while (*p != '\0')
     {
@@ -128,7 +132,9 @@ calc_result_length (const char *format, va_list args)
          p++;
        }
     }
-
+#ifdef va_copy
+  va_end (ap);
+#endif
   return total_width;
 }