diff --git a/desmume/src/emufile.h b/desmume/src/emufile.h index 612feccad..d14a9ba9c 100644 --- a/desmume/src/emufile.h +++ b/desmume/src/emufile.h @@ -134,14 +134,19 @@ public: virtual int fprintf(const char *format, ...) { va_list argptr; va_start(argptr, format); - + //we dont generate straight into the buffer because it will null terminate (one more byte than we want) int amt = vsnprintf(0,0,format,argptr); char* tempbuf = new char[amt+1]; - vsprintf(tempbuf,format,argptr); - fwrite(tempbuf,amt); - delete[] tempbuf; + va_end(argptr); + va_start(argptr, format); + vsprintf(tempbuf,format,argptr); + + fwrite(tempbuf,amt); + delete[] tempbuf; + + va_end(argptr); return amt; };