]> git.jsancho.org Git - lugaru.git/commitdiff
Avoid using Variable Length Arrays (which are refused by clang)
authorCôme Chilliet <come@chilliet.eu>
Tue, 29 Nov 2016 04:51:16 +0000 (11:51 +0700)
committerCôme Chilliet <come@chilliet.eu>
Tue, 29 Nov 2016 04:51:16 +0000 (11:51 +0700)
Source/Game.h
Source/main.cpp

index 102f026f222e5de705e45d722f7dd9d5a1720ebf..c531c02f08f729bb08edffacd0372dc26d80c4ab 100644 (file)
@@ -249,5 +249,6 @@ const int commandLineOptionsNumber = 8;
 extern const option::Descriptor usage[12];
 
 extern option::Option commandLineOptions[commandLineOptionsNumber];
+extern option::Option* commandLineOptionsBuffer;
 
 #endif
index 1e7890876dd9ba8198875fb0df423175fa36307d..33a7b37edb679baba5a81e7ea318d0ef3a11e27c 100644 (file)
@@ -517,6 +517,8 @@ void CleanUp (void)
 {
     LOGFUNC;
 
+    delete[] commandLineOptionsBuffer;
+
     SDL_Quit();
 #ifndef __MINGW32__ // FIXME: Temporary workaround for GL-8
 #define GL_FUNC(ret,fn,params,call,rt) p##fn = NULL;
@@ -526,7 +528,6 @@ void CleanUp (void)
     //  the context is destroyed and libGL unloaded by SDL_Quit().
     pglDeleteTextures = glDeleteTextures_doNothing;
 #endif // __MINGW32__
-
 }
 
 // --------------------------------------------------------------------------
@@ -651,6 +652,7 @@ const option::Descriptor usage[] =
 };
 
 option::Option commandLineOptions[commandLineOptionsNumber];
+option::Option* commandLineOptionsBuffer;
 
 int main(int argc, char **argv)
 {
@@ -660,21 +662,24 @@ int main(int argc, char **argv)
         std::cerr << "Found incorrect command line option number" << std::endl;
         return 1;
     }
-    option::Option buffer[stats.buffer_max];
-    option::Parser parse(true, usage, argc, argv, commandLineOptions, buffer);
+    commandLineOptionsBuffer = new option::Option[stats.buffer_max];
+    option::Parser parse(true, usage, argc, argv, commandLineOptions, commandLineOptionsBuffer);
 
     if (parse.error()) {
+        delete[] commandLineOptionsBuffer;
         return 1;
     }
 
     if (commandLineOptions[HELP]) {
         option::printUsage(std::cout, usage);
+        delete[] commandLineOptionsBuffer;
         return 0;
     }
 
     if (option::Option* opt = commandLineOptions[UNKNOWN]) {
         std::cerr << "Unknown option: " << opt->name << "\n";
         option::printUsage(std::cerr, usage);
+        delete[] commandLineOptionsBuffer;
         return 1;
     }
 
@@ -689,8 +694,10 @@ int main(int argc, char **argv)
         {
             newGame();
 
-            if (!SetUp ())
+            if (!SetUp ()) {
+                delete[] commandLineOptionsBuffer;
                 return 42;
+            }
 
             bool gameDone = false;
             bool gameFocused = true;