]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Avoid segv on linux64. It caused at second calling vfprintf() of vlogprintf()
authorMichihiro NAKAJIMA <ggcueroad@gmail.com>
Wed, 16 Dec 2009 19:34:53 +0000 (14:34 -0500)
committerMichihiro NAKAJIMA <ggcueroad@gmail.com>
Wed, 16 Dec 2009 19:34:53 +0000 (14:34 -0500)
in */test/main.c.
Use a copy of ap for second calling vfprintf().

SVN-Revision: 1755

cpio/test/main.c
libarchive/test/main.c
tar/test/main.c

index ac651f870bbc0dbf2a2928e0057eec6df69dcfab..15dfd7503d84ee7506e346cbff5bc2bfdac0f189 100644 (file)
@@ -199,10 +199,19 @@ static FILE *logfile;
 static void
 vlogprintf(const char *fmt, va_list ap)
 {
+#ifdef va_copy
+       va_list lfap;
+       va_copy(lfap, ap);
+#endif
        if (log_console)
                vfprintf(stdout, fmt, ap);
        if (logfile != NULL)
+#ifdef va_copy
+               vfprintf(logfile, fmt, lfap);
+               va_end(lfap);
+#else
                vfprintf(logfile, fmt, ap);
+#endif
 }
 
 static void
index c3dfb5856951100e521415a4669fc2139266ca61..5a921b97d5ac162cd559697a9a8660929abba603 100644 (file)
@@ -198,10 +198,19 @@ static FILE *logfile;
 static void
 vlogprintf(const char *fmt, va_list ap)
 {
+#ifdef va_copy
+       va_list lfap;
+       va_copy(lfap, ap);
+#endif
        if (log_console)
                vfprintf(stdout, fmt, ap);
        if (logfile != NULL)
+#ifdef va_copy
+               vfprintf(logfile, fmt, lfap);
+               va_end(lfap);
+#else
                vfprintf(logfile, fmt, ap);
+#endif
 }
 
 static void
index d26f98124a6d310e3defa0f22679bba101d6cb93..a9f6745879927b82cbc4a041d930724be098ceb4 100644 (file)
@@ -200,10 +200,19 @@ static FILE *logfile;
 static void
 vlogprintf(const char *fmt, va_list ap)
 {
+#ifdef va_copy
+       va_list lfap;
+       va_copy(lfap, ap);
+#endif
        if (log_console)
                vfprintf(stdout, fmt, ap);
        if (logfile != NULL)
+#ifdef va_copy
+               vfprintf(logfile, fmt, lfap);
+               va_end(lfap);
+#else
                vfprintf(logfile, fmt, ap);
+#endif
 }
 
 static void