diff options
Diffstat (limited to 'ctdb/lib/util/debug.c')
-rw-r--r-- | ctdb/lib/util/debug.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/ctdb/lib/util/debug.c b/ctdb/lib/util/debug.c index a3229015ca..ffe1dcc382 100644 --- a/ctdb/lib/util/debug.c +++ b/ctdb/lib/util/debug.c @@ -22,6 +22,22 @@ #include "system/time.h" #include <unistd.h> +static int vasprintf2(char **ptr, const char *format, va_list ap) +{ + int ret; + va_list tmp_ap; + + va_copy(tmp_ap, ap); + ret = vsnprintf(NULL, 0, format, tmp_ap); + if (ret <= 0) return ret; + + (*ptr) = (char *)malloc(ret+1); + if (!*ptr) return -1; + ret = vsnprintf(*ptr, ret+1, format, ap); + + return ret; +} + void do_debug(const char *format, ...) { struct timeval tm; @@ -29,7 +45,7 @@ void do_debug(const char *format, ...) char *s = NULL; va_start(ap, format); - vasprintf(&s, format, ap); + vasprintf2(&s, format, ap); va_end(ap); gettimeofday(&tm, NULL); |