]> git.jsancho.org Git - lugaru.git/commitdiff
Fix a crash when map contains a negative number of hotspots
authorCôme Chilliet <come@chilliet.eu>
Sat, 10 Dec 2016 05:59:17 +0000 (12:59 +0700)
committerCôme Chilliet <come@chilliet.eu>
Sat, 10 Dec 2016 05:59:17 +0000 (12:59 +0700)
Source/GameTick.cpp
Source/main.cpp

index a8a5cfb67bf8e4ce50da4ba00c8c4b82ff5f25cf..efd06e752eb7fb921b95e493ebd81da29f5b5149 100644 (file)
@@ -992,6 +992,10 @@ void Game::Loadlevel(const std::string& name)
     if (mapvers >= 7) {
         int numhotspots;
         funpackf(tfile, "Bi", &numhotspots);
+        if (numhotspots < 0) {
+            cerr << "Map " << name << " have an invalid number of hotspots" << endl;
+            numhotspots = 0;
+        }
         Hotspot::hotspots.resize(numhotspots);
         for (int i = 0; i < Hotspot::hotspots.size(); i++) {
             funpackf(tfile, "Bi Bf Bf Bf Bf", &Hotspot::hotspots[i].type, &Hotspot::hotspots[i].size, &Hotspot::hotspots[i].position.x, &Hotspot::hotspots[i].position.y, &Hotspot::hotspots[i].position.z);
index 4ff4ebc29d788e0063ef18e70bbe2b0e1b44686b..e0bf4309188959db1be8b8f52e1946faeaa20e0e 100644 (file)
@@ -626,7 +626,7 @@ int main(int argc, char **argv)
 
     LOGFUNC;
 
-    try {
+    //~ try {
         {
             newGame();
 
@@ -677,16 +677,16 @@ int main(int argc, char **argv)
         CleanUp ();
 
         return 0;
-    } catch (const std::exception& error) {
-        CleanUp();
+    //~ } catch (const std::exception& error) {
+        //~ CleanUp();
 
-        std::string e = "Caught exception: ";
-        e += error.what();
+        //~ std::string e = "Caught exception: ";
+        //~ e += error.what();
 
-        LOG(e);
+        //~ LOG(e);
 
-        SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Exception catched", error.what(), NULL);
+        //~ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Exception catched", error.what(), NULL);
 
-        return -1;
-    }
+        //~ return -1;
+    //~ }
 }