Stop segfaults on amd64 during warnings messages by creating
authorSteve Dickson <steved@dickson.boston.devel.redhat.com>
Thu, 17 Jan 2008 16:25:37 +0000 (11:25 -0500)
committerSteve Dickson <steved@dickson.boston.devel.redhat.com>
Thu, 17 Jan 2008 16:25:37 +0000 (11:25 -0500)
a second va_list in xlog_backend() and then use that va_list
to print messages on stderr.

Signed-off-by: Steinar H. Gunderson <sesse@debian.org>
Signed-off-by: Steve Langasek <vorlon@debian.org>
Signed-off-by: Steve Dickson <steved@dickson.boston.devel.redhat.com>
support/nfs/xlog.c

index 26123c5..6820346 100644 (file)
@@ -133,9 +133,14 @@ xlog_enabled(int fac)
 void
 xlog_backend(int kind, const char *fmt, va_list args)
 {
+       va_list args2;
+
        if (!(kind & (L_ALL)) && !(logging && (kind & logmask)))
                return;
 
+       if (log_stderr)
+               va_copy(args2, args);
+
        if (log_syslog) {
                switch (kind) {
                case L_FATAL:
@@ -171,9 +176,9 @@ xlog_backend(int kind, const char *fmt, va_list args)
 #else
                fprintf(stderr, "%s: ", log_name);
 #endif
-
-               vfprintf(stderr, fmt, args);
+               vfprintf(stderr, fmt, args2);
                fprintf(stderr, "\n");
+               va_end(args2);
        }
 
        if (kind == L_FATAL)