]> git.cameronkatri.com Git - mandoc.git/blobdiff - compat_vasprintf.c
Infrastructure for -T markdown tests.
[mandoc.git] / compat_vasprintf.c
index 9524bc04f40d5b2626ec1e52ce75cf9f7f0f3073..9040822b0097dd36a70319f1a1e455fe8244b677 100644 (file)
@@ -6,7 +6,7 @@ int dummy;
 
 #else
 
-/*     $Id: compat_vasprintf.c,v 1.1 2015/03/19 14:57:29 schwarze Exp $        */
+/*     $Id: compat_vasprintf.c,v 1.3 2015/10/06 18:32:19 schwarze Exp $        */
 /*
  * Copyright (c) 2015 Ingo Schwarze <schwarze@openbsd.org>
  *
@@ -37,16 +37,20 @@ int
 vasprintf(char **ret, const char *format, va_list ap)
 {
        char     buf[2];
+       va_list  ap2;
        int      sz;
 
-       if ((sz = vsnprintf(buf, sizeof(buf), format, ap)) != -1 &&
-           (*ret = malloc(sz + 1)) != NULL) {
+       va_copy(ap2, ap);
+       sz = vsnprintf(buf, sizeof(buf), format, ap2);
+       va_end(ap2);
+
+       if (sz != -1 && (*ret = malloc(sz + 1)) != NULL) {
                if (vsnprintf(*ret, sz + 1, format, ap) == sz)
-                       return(sz);
+                       return sz;
                free(*ret);
        }
        *ret = NULL;
-       return(-1);
+       return -1;
 }
 
 #endif