diff --git a/src/conio/ciolib.c b/src/conio/ciolib.c
index 0bce2a6d3bb9025b074f2211af837b93adcf969c..91b1a6e9b2e4587978a6f5dc0726cefde8898939 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)