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.
This commit is contained in:
yobibe 2009-06-05 09:24:51 +00:00
parent d722c4ce78
commit 5aad6db03c

View file

@ -15,7 +15,7 @@ int offline;
static char *logfilename = "proxmark3.log"; static char *logfilename = "proxmark3.log";
void PrintToScrollback(char *fmt, ...) { void PrintToScrollback(char *fmt, ...) {
va_list argptr; va_list argptr, argptr2;
static FILE *logfile = NULL; static FILE *logfile = NULL;
static int logging=1; static int logging=1;
@ -28,7 +28,9 @@ void PrintToScrollback(char *fmt, ...) {
} }
va_start(argptr, fmt); va_start(argptr, fmt);
va_copy(argptr2, argptr);
vprintf(fmt, argptr); vprintf(fmt, argptr);
va_end(argptr);
printf("\n"); printf("\n");
if (logging && logfile) { if (logging && logfile) {
#if 0 #if 0
@ -42,11 +44,11 @@ void PrintToScrollback(char *fmt, ...) {
fprintf(logfile,"%s ", zeit); fprintf(logfile,"%s ", zeit);
#endif #endif
vfprintf(logfile, fmt, argptr); vfprintf(logfile, fmt, argptr2);
fprintf(logfile,"\n"); fprintf(logfile,"\n");
fflush(logfile); fflush(logfile);
} }
va_end(argptr); va_end(argptr2);
} }
void setlogfilename(char *fn) void setlogfilename(char *fn)