From 5aad6db03ca66dfdcea196ec4c3816bf0eac72ed Mon Sep 17 00:00:00 2001 From: yobibe Date: Fri, 5 Jun 2009 09:24:51 +0000 Subject: [PATCH] Fix segfault: v.printf() cannot be called twice on the same arg list See man. By chance it worked on 32-bit platforms but on a 64-bit it crashed. --- linux/gui.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/linux/gui.c b/linux/gui.c index 2179a5ec..e8751a62 100644 --- a/linux/gui.c +++ b/linux/gui.c @@ -15,7 +15,7 @@ int offline; static char *logfilename = "proxmark3.log"; void PrintToScrollback(char *fmt, ...) { - va_list argptr; + va_list argptr, argptr2; static FILE *logfile = NULL; static int logging=1; @@ -28,7 +28,9 @@ void PrintToScrollback(char *fmt, ...) { } va_start(argptr, fmt); + va_copy(argptr2, argptr); vprintf(fmt, argptr); + va_end(argptr); printf("\n"); if (logging && logfile) { #if 0 @@ -42,11 +44,11 @@ void PrintToScrollback(char *fmt, ...) { fprintf(logfile,"%s ", zeit); #endif - vfprintf(logfile, fmt, argptr); + vfprintf(logfile, fmt, argptr2); fprintf(logfile,"\n"); fflush(logfile); } - va_end(argptr); + va_end(argptr2); } void setlogfilename(char *fn) -- 2.39.2