]> granicus.if.org Git - strace/blobdiff - vsprintf.c
io.c: use printaddr and umove_or_printaddr
[strace] / vsprintf.c
index b66609ac79beb5768421dcbdbdf301883ab1db0a..aae40db30d6a58c30e2dd9fe5fd2d792e87eccaf 100644 (file)
 
 #include "defs.h"
 
-#ifdef USE_CUSTOM_PRINTF
+#if USE_CUSTOM_PRINTF
 
 #include <stdarg.h>
 #include <limits.h>
 
+#ifndef HAVE_FPUTS_UNLOCKED
+# define fputs_unlocked fputs
+#endif
+
 #define noinline_for_stack /*nothing*/
 #define likely(expr)       (expr)
 #define unlikely(expr)     (expr)
@@ -759,8 +763,8 @@ int kernel_vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
 
 int strace_vfprintf(FILE *fp, const char *fmt, va_list args)
 {
-       static char *buf;
-       static unsigned buflen;
+       static char *buf = NULL;
+       static unsigned buflen = 0;
 
        int r;
        va_list a1;
@@ -772,7 +776,7 @@ int strace_vfprintf(FILE *fp, const char *fmt, va_list args)
        if (len >= buflen) {
                buflen = len + 256;
                free(buf);
-               buf = malloc(buflen);
+               buf = xmalloc(buflen);
                /*len =*/ kernel_vsnprintf(buf, buflen, fmt, args);
        }