]> mj.ucw.cz Git - libucw.git/commitdiff
Checked and corrected all uses of va_args.
authorMartin Mares <mj@ucw.cz>
Wed, 14 Sep 2005 09:46:46 +0000 (09:46 +0000)
committerMartin Mares <mj@ucw.cz>
Wed, 14 Sep 2005 09:46:46 +0000 (09:46 +0000)
lib/ff-printf.c
lib/log.c
lib/mempool-fmt.c
lib/runcmd.c
lib/stkstring.c

index aff49eb24de203606553f18edf4b81ae1da69c68..769f830e1cd5423e7db5e80831bc090ba67e98b0 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *     UCW Library -- Printf on Fastbuf Streams
  *
- *     (c) 2002 Martin Mares <mj@ucw.cz>
+ *     (c) 2002--2005 Martin Mares <mj@ucw.cz>
  *
  *     This software may be freely distributed and used according to the terms
  *     of the GNU Lesser General Public License.
@@ -24,6 +24,7 @@ vbprintf(struct fastbuf *b, char *msg, va_list args)
     {
       va_copy(args2, args);
       r = vsnprintf(buf, len, msg, args2);
+      va_end(args2);
       if (r < 0)
        len = 256;
       else if (r < len)
@@ -42,6 +43,7 @@ vbprintf(struct fastbuf *b, char *msg, va_list args)
       buf = alloca(len);
       va_copy(args2, args);
       r = vsnprintf(buf, len, msg, args2);
+      va_end(args2);
       if (r < 0)
        len += len;
       else if (r < len)
index 45235ce9d90cd1e668a47d4584885379ea008b71..88360004ec9ed0b91dff9215ee4ba0677a2fb791 100644 (file)
--- a/lib/log.c
+++ b/lib/log.c
@@ -1,7 +1,7 @@
 /*
  *     UCW Library -- Logging
  *
- *     (c) 1997--2004 Martin Mares <mj@ucw.cz>
+ *     (c) 1997--2005 Martin Mares <mj@ucw.cz>
  *
  *     This software may be freely distributed and used according to the terms
  *     of the GNU Lesser General Public License.
@@ -31,6 +31,7 @@ vlog_msg(unsigned int cat, const char *msg, va_list args)
   byte *buf, *p;
   int buflen = 256;
   int l, l0, r;
+  va_list args2;
 
   if (log_switch_hook)
     log_switch_hook(tm);
@@ -53,7 +54,9 @@ vlog_msg(unsigned int cat, const char *msg, va_list args)
        }
       l0 = p - buf + 1;
       r = buflen - l0;
-      l = vsnprintf(p, r, msg, args);
+      va_copy(args2, args);
+      l = vsnprintf(p, r, msg, args2);
+      va_end(args2);
       if (l < 0)
        l = r;
       else if (l < r)
index c8b1e4c823ecb9d04f81a6adf391e4e0d102a894..b65789f54da6dcafd51b04f34f32b4bd595c28cb 100644 (file)
@@ -24,7 +24,10 @@ mp_vprintf(struct mempool *p, char *fmt, va_list args)
       ret = mp_alloc(p, 1);
       free = p->last - p->free;
     }
-  int cnt = vsnprintf(ret, free, fmt, args);
+  va_list args2;
+  va_copy(args2, args);
+  int cnt = vsnprintf(ret, free, fmt, args2);
+  va_end(args2);
   if (cnt < 0)
     {
       /* Our C library doesn't support C99 return value of vsnprintf, so we need to iterate */
@@ -34,7 +37,9 @@ mp_vprintf(struct mempool *p, char *fmt, va_list args)
        {
          len *= 2;
          buf = alloca(len);
-         cnt = vsnprintf(buf, len, fmt, args);
+         va_copy(args2, args);
+         cnt = vsnprintf(buf, len, fmt, args2);
+         va_end(args2);
        }
       while (cnt < 0);
       ret = mp_alloc(p, cnt+1);
@@ -45,7 +50,9 @@ mp_vprintf(struct mempool *p, char *fmt, va_list args)
   else
     {
       ret = mp_alloc(p, cnt+1);
-      int cnt2 = vsnprintf(ret, cnt+1, fmt, args);
+      va_copy(args2, args);
+      int cnt2 = vsnprintf(ret, cnt+1, fmt, args2);
+      va_end(args2);
       ASSERT(cnt2 == cnt);
     }
   return ret;
index dbb3c8a71772c65269d3c5679b6a0e19dba6a862..7f373877086137ed93822e24b39915c94ba72bc9 100644 (file)
@@ -24,12 +24,14 @@ exec_command_v(byte *cmd, va_list args)
   byte *arg;
   while (arg = va_arg(cargs, byte *))
     cnt++;
+  va_end(cargs);
   char **argv = alloca(sizeof(byte *) * cnt);
   argv[0] = cmd;
   cnt = 1;
   va_copy(cargs, args);
   while (arg = va_arg(cargs, byte *))
     argv[cnt++] = arg;
+  va_end(cargs);
   argv[cnt] = NULL;
   execv(cmd, argv);
   byte echo[256];
@@ -73,8 +75,6 @@ echo_command_v(byte *buf, int size, byte *cmd, va_list args)
   byte *limit = buf + size - 4;
   byte *p = buf;
   byte *arg = cmd;
-  va_list cargs;
-  va_copy(cargs, args);
   do
     {
       int l = strlen(arg);
@@ -89,7 +89,7 @@ echo_command_v(byte *buf, int size, byte *cmd, va_list args)
       memcpy(p, arg, l);
       p += l;
     }
-  while (arg = va_arg(cargs, byte *));
+  while (arg = va_arg(args, byte *));
   *p = 0;
 }
 
index a8593215ea71d478eba5232dd204340f28f2a844..c7ac9ef5b75f528eef06862510a304c94a299a91 100644 (file)
@@ -31,7 +31,7 @@ static int stk_printf_len;
 uns
 stk_printf_internal(char *fmt, ...)
 {
-  va_list args;
+  va_list args, args2;
   va_start(args, fmt);
   if (!stk_printf_buf)
     {
@@ -40,11 +40,16 @@ stk_printf_internal(char *fmt, ...)
     }
   for (;;)
     {
-      int l = vsnprintf(stk_printf_buf, stk_printf_len, fmt, args);
+      va_copy(args2, args);
+      int l = vsnprintf(stk_printf_buf, stk_printf_len, fmt, args2);
+      va_end(args2);
       if (l < 0)
        stk_printf_len *= 2;
       else if (l < stk_printf_len)
-       return l+1;
+       {
+         va_end(args);
+         return l+1;
+       }
       else
        stk_printf_len = MAX(stk_printf_len*2, l+1);
       stk_printf_buf = xrealloc(stk_printf_buf, stk_printf_len);