From b2c7bf51e56dd7bbc696592fa96b576582bfc417 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Tue, 17 Jun 2003 19:26:59 +0000
Subject: [PATCH] Fix crash for very long command lines

---
 Fltk/Main.cpp | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/Fltk/Main.cpp b/Fltk/Main.cpp
index 3aea18a1b4..48bc1142ec 100644
--- a/Fltk/Main.cpp
+++ b/Fltk/Main.cpp
@@ -1,4 +1,4 @@
-// $Id: Main.cpp,v 1.48 2003-06-14 04:37:42 geuzaine Exp $
+// $Id: Main.cpp,v 1.49 2003-06-17 19:26:59 geuzaine Exp $
 //
 // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 //
@@ -49,7 +49,7 @@ GUI *WID = NULL;
 int main(int argc, char *argv[])
 {
   int i, nbf;
-  char cmdline[1000] = "", currtime[100];
+  char *cmdline, currtime[100];
   time_t now;
 
   // log some info
@@ -58,10 +58,15 @@ int main(int argc, char *argv[])
   strcpy(currtime, ctime(&now));
   currtime[strlen(currtime) - 1] = '\0';
 
+  int cll = 0;
+  for(i = 0; i < argc; i++) {
+    cll += strlen(argv[i]);
+  }
+  cmdline = (char*)Malloc((cll+argc+1)*sizeof(char));
+  cmdline[0] = '\0';
   for(i = 0; i < argc; i++) {
-    if(i)
-      strcat(cmdline, " ");
     strcat(cmdline, argv[i]);
+    strcat(cmdline, " ");
   }
 
   // Gmsh default options
@@ -187,6 +192,8 @@ int main(int argc, char *argv[])
   Msg(LOG_INFO, "Command line   : %s", cmdline);
   Msg(LOG_INFO, "-------------------------------------------------------");
 
+  Free(cmdline);
+
   // Check for buggy obsolete GSL versions
 
   check_gsl();
-- 
GitLab