From 3477d11d9843cc5eef8498f958bcd2418d41526f Mon Sep 17 00:00:00 2001 From: deuce <> Date: Sun, 8 Jul 2007 10:17:37 +0000 Subject: [PATCH] Cannot legally use the same va_list twice and expect it to still work. Make a copy before the second use. The old code failed on Linux x86_64 --- src/conio/ciolib.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/conio/ciolib.c b/src/conio/ciolib.c index 0bce2a6d3b..91b1a6e9b2 100644 --- a/src/conio/ciolib.c +++ b/src/conio/ciolib.c @@ -789,6 +789,7 @@ CIOLIBEXPORT int CIOLIBCALL ciolib_cprintf(char *fmat, ...) char str[16384]; #else char *str; + va_list argptr2; #endif CIOLIB_INIT(); @@ -797,13 +798,14 @@ CIOLIBEXPORT int CIOLIBCALL ciolib_cprintf(char *fmat, ...) #ifdef _MSC_VER ret=_vsnprintf(str,sizeof(str)-1,fmat,argptr); #else + va_copy(argptr2, argptr); ret=vsnprintf(NULL,0,fmat,argptr); if(ret<0) return(EOF); str=(char *)alloca(ret+1); if(str==NULL) return(EOF); - ret=vsprintf(str,fmat,argptr); + ret=vsprintf(str,fmat,argptr2); #endif va_end(argptr); if(ret>=0) -- GitLab