Browse Source

Bug behoben der zum absturz führte

Kolja Strohm 6 years ago
parent
commit
117ff79ebc
1 changed files with 20 additions and 2 deletions
  1. 20 2
      SpielServer/Spiel.cpp

+ 20 - 2
SpielServer/Spiel.cpp

@@ -547,13 +547,31 @@ void Spiel::thread()
     spielDll = LoadLibrary( pfad->getText() );
     if( !spielDll )
     {
-        // error
+        Text tmp = ss->zInit()->zWert( "TempMapPfad" )->getText();
+        tmp += "/";
+        tmp += id;
+        DateiRemove( tmp );
+        for( int i = 0; i < spielerAnzahl; i++ )
+            klients->z( i )->errorZuKlientSende( "Fehler beim laden des Spiels. Der Server kann das Spiel nict finden." );
+        ss->zDB()->setSpielStatusBeendet( id, 4 );
+        ss->removeSpiel( id ); // delete this
+        return;
     }
     pfad->release();
     DllStart getSpielKlasse = (DllStart)GetProcAddress( spielDll, "getSpielKlasse" );
     if( !getSpielKlasse )
     {
-        // error
+        FreeLibrary( spielDll );
+        spielDll = 0;
+        Text tmp = ss->zInit()->zWert( "TempMapPfad" )->getText();
+        tmp += "/";
+        tmp += id;
+        DateiRemove( tmp );
+        for( int i = 0; i < spielerAnzahl; i++ )
+            klients->z( i )->errorZuKlientSende( "Fehler beim laden des Spiels. Der Server kann das Spiel nict finden." );
+        ss->zDB()->setSpielStatusBeendet( id, 4 );
+        ss->removeSpiel( id ); // delete this
+        return;
     }
     spiel = getSpielKlasse();
     spiel->setPSQLK( ss->zDB()->getThis() );