From d8fcba34af926852a21fe7a4afb677748301a9dd Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Sun, 23 Nov 2003 07:14:08 +0000
Subject: [PATCH] Nested varargs calls seem to be a bad idea :-)

---
 Fltk/Message.cpp | 23 ++++++++++-------------
 1 file changed, 10 insertions(+), 13 deletions(-)

diff --git a/Fltk/Message.cpp b/Fltk/Message.cpp
index 7d2962287e..4b008ff4f7 100644
--- a/Fltk/Message.cpp
+++ b/Fltk/Message.cpp
@@ -1,4 +1,4 @@
-// $Id: Message.cpp,v 1.41 2003-11-23 06:58:01 geuzaine Exp $
+// $Id: Message.cpp,v 1.42 2003-11-23 07:14:08 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -39,18 +39,6 @@
 extern GUI *WID;
 extern Context_T CTX;
 
-// Some old systems don't have vsnprintf... Just call vsprintf instead.
-
-#if defined(HAVE_NO_VSNPRINTF)
-int vsnprintf(char *str, size_t size, const char* fmt, ...){
-  va_list args;
-  va_start(args, fmt);
-  int ret = vsprintf(str, fmt, args);
-  va_end(args);
-  return ret;
-}
-#endif
-
 // Handle signals. It is a crime to call stdio functions in a signal
 // handler. But who cares? ;-)
 
@@ -162,7 +150,11 @@ void Msg(int level, char *fmt, ...)
     va_start(args, fmt);
 
     if(window >= 0) {
+#if defined(HAVE_NO_VSNPRINTF)
+      vsprintf(buff[window], fmt, args);
+#else
       vsnprintf(buff[window], BUFFSIZE, fmt, args);
+#endif
       if(window <= 2)
         WID->set_status(buff[window], window);
       if(log && strlen(buff[window]))
@@ -172,7 +164,12 @@ void Msg(int level, char *fmt, ...)
       strcpy(buff1, "@C1");
       if(str)
         strncat(buff1, str, BUFFSIZE-4);
+
+#if defined(HAVE_NO_VSNPRINTF)
+      vsprintf(buff2, fmt, args);
+#else
       vsnprintf(buff2, BUFFSIZE, fmt, args);
+#endif
       strncat(buff1, buff2, BUFFSIZE-strlen(buff1));
       if(CTX.terminal)
         fprintf(stderr, "%s\n", &buff1[3]);
-- 
GitLab