]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Jan Hubicka <jh@suse.cz>
authorJosef Zlomek <zlomekj@suse.cz>
Thu, 30 Oct 2003 20:18:13 +0000 (21:18 +0100)
committerJosef Zlomek <zlomek@gcc.gnu.org>
Thu, 30 Oct 2003 20:18:13 +0000 (20:18 +0000)
Jan Hubicka <jh@suse.cz>
* vasprintf.c (int_vasprintf): Pass va_list by value.
Use va_copy for copying va_list.
(vasprintf): Pass va_list by value.

From-SVN: r73098

libiberty/ChangeLog
libiberty/vasprintf.c

index 34f421e194926888934641db81fd55aec5d34999..0cfc57dd28a12c93ab5c35a59a42a4fd97ab05d1 100644 (file)
@@ -1,3 +1,10 @@
+2003-10-30  Josef Zlomek  <zlomekj@suse.cz>
+
+       Jan Hubicka <jh@suse.cz>
+       * vasprintf.c (int_vasprintf): Pass va_list by value.
+       Use va_copy for copying va_list.
+       (vasprintf): Pass va_list by value.
+
 2003-10-30  Josef Zlomek  <zlomekj@suse.cz>
 
        * hashtab.c (htab_find_slot_with_hash): Decrease n_deleted
index 775260475cb1f5835e9ecd79c617a636aed67053..d3d4f3a1553bebc2b14bbdc6c92861a6917d74b0 100644 (file)
@@ -59,13 +59,13 @@ not be allocated, minus one is returned and @code{NULL} is stored in
 
 */
 
-static int int_vasprintf PARAMS ((char **, const char *, va_list *));
+static int int_vasprintf PARAMS ((char **, const char *, va_list));
 
 static int
 int_vasprintf (result, format, args)
      char **result;
      const char *format;
-     va_list *args;
+     va_list args;
 {
   const char *p = format;
   /* Add one to make sure that it is never zero, which might cause malloc
@@ -73,7 +73,11 @@ int_vasprintf (result, format, args)
   int total_width = strlen (format) + 1;
   va_list ap;
 
-  memcpy ((PTR) &ap, (PTR) args, sizeof (va_list));
+#ifdef va_copy
+  va_copy (ap, args);
+#else
+  memcpy ((PTR) &ap, (PTR) &args, sizeof (va_list));
+#endif
 
   while (*p != '\0')
     {
@@ -135,12 +139,15 @@ int_vasprintf (result, format, args)
          p++;
        }
     }
+#ifdef va_copy
+  va_end (ap);
+#endif
 #ifdef TEST
   global_total_width = total_width;
 #endif
   *result = (char *) malloc (total_width);
   if (*result != NULL)
-    return vsprintf (*result, format, *args);
+    return vsprintf (*result, format, args);
   else
     return -1;
 }
@@ -155,7 +162,7 @@ vasprintf (result, format, args)
      va_list args;
 #endif
 {
-  return int_vasprintf (result, format, &args);
+  return int_vasprintf (result, format, args);
 }
 
 #ifdef TEST