]> mj.ucw.cz Git - libucw.git/commitdiff
Fix illegal operations with va_list's.
authorMartin Mares <mj@ucw.cz>
Fri, 15 Apr 2005 21:51:52 +0000 (21:51 +0000)
committerMartin Mares <mj@ucw.cz>
Fri, 15 Apr 2005 21:51:52 +0000 (21:51 +0000)
lib/mempool-str.c

index 0da43e16c2fa16c9ab078b2337f7c8769b0b73a8..360a3b950362e7f2e83f90a23875363f89fe55ea 100644 (file)
@@ -29,25 +29,27 @@ mp_multicat(struct mempool *p, ...)
   va_start(args, p);
   char *x, *y;
   uns cnt = 0;
-  a = args;
+  va_copy(a, args);
   while (x = va_arg(a, char *))
     cnt++;
   uns *sizes = alloca(cnt * sizeof(uns));
   uns len = 1;
   cnt = 0;
-  a = args;
+  va_end(a);
+  va_copy(a, args);
   while (x = va_arg(a, char *))
     len += sizes[cnt++] = strlen(x);
   char *buf = mp_alloc_fast_noalign(p, len);
   y = buf;
-  a = args;
+  va_end(a);
   cnt = 0;
-  while (x = va_arg(a, char *))
+  while (x = va_arg(args, char *))
     {
       memcpy(y, x, sizes[cnt]);
       y += sizes[cnt++];
     }
   *y = 0;
+  va_end(args);
   return buf;
 }