Răsfoiți Sursa

Workaround for potential crash on opening town dwelling with no valid
creatures

Ivan Savenko 2 ani în urmă
părinte
comite
0dca5c45bd
1 a modificat fișierele cu 7 adăugiri și 1 ștergeri
  1. 7 1
      client/windows/CCastleInterface.cpp

+ 7 - 1
client/windows/CCastleInterface.cpp

@@ -849,7 +849,13 @@ void CCastleBuildings::enterCastleGate()
 
 void CCastleBuildings::enterDwelling(int level)
 {
-	assert(level >= 0 && level < town->creatures.size());
+	if (level < 0 || level >= town->creatures.size() || town->creatures[level].second.empty())
+	{
+		assert(0);
+		logGlobal->error("Attempt to enter into invalid dwelling of level %d in town %s (%s)", level, town->getNameTranslated(), town->town->faction->getNameTranslated());
+		return;
+	}
+
 	auto recruitCb = [=](CreatureID id, int count)
 	{
 		LOCPLINT->cb->recruitCreatures(town, town->getUpperArmy(), id, count, level);