]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/kern/misc.c (grub_vprintf): Use va_copy when necessary.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 12 Sep 2010 12:00:44 +0000 (14:00 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 12 Sep 2010 12:00:44 +0000 (14:00 +0200)
(grub_xvasprintf): Likewise.

ChangeLog
grub-core/kern/misc.c

index 436c0980b396bf55a9c7dfda01700ef9c259c140..46f430bdc581cbc466d2ad103ba32f9b897d720c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2010-09-12  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/kern/misc.c (grub_vprintf): Use va_copy when necessary.
+       (grub_xvasprintf): Likewise.
+
 2010-09-12  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/kern/emu/main.c (main): Call hostfs_init only after init_all.
index 0bfa08992ade28a043bfa57da80f04c11ff3f152..6e0eaf6a447c9d50df3a8d747a50db70c9bcef3f 100644 (file)
@@ -196,6 +196,8 @@ grub_vprintf (const char *fmt, va_list args)
   grub_size_t s;
   static char buf[PREALLOC_SIZE + 1];
   char *curbuf = buf;
+  va_list ap2;
+  va_copy (ap2, args);
 
   s = grub_vsnprintf_real (buf, PREALLOC_SIZE, fmt, args);
   if (s > PREALLOC_SIZE)
@@ -210,7 +212,7 @@ grub_vprintf (const char *fmt, va_list args)
          buf[PREALLOC_SIZE] = 0;
        }
       else
-       s = grub_vsnprintf_real (curbuf, s, fmt, args);
+       s = grub_vsnprintf_real (curbuf, s, fmt, ap2);
     }
 
   grub_xputs (curbuf);
@@ -947,11 +949,13 @@ grub_xvasprintf (const char *fmt, va_list ap)
 
   while (1)
     {
+      va_list ap2;
+      va_copy (ap2, ap);
       ret = grub_malloc (as + 1);
       if (!ret)
        return NULL;
 
-      s = grub_vsnprintf_real (ret, as, fmt, ap);
+      s = grub_vsnprintf_real (ret, as, fmt, ap2);
       if (s <= as)
        return ret;