Explorar el Código

Merge pull request #6218 from MichalZr6/tile_null_fix

Avoid crash when town has out-of-bounds visitablePos (null TerrainTile)
Ivan Savenko hace 1 semana
padre
commit
0cbe240c51
Se han modificado 1 ficheros con 9 adiciones y 1 borrados
  1. 9 1
      lib/mapObjects/CGTownInstance.cpp

+ 9 - 1
lib/mapObjects/CGTownInstance.cpp

@@ -698,7 +698,15 @@ ObjectInstanceID CGTownInstance::getObjInstanceID() const
 
 void CGTownInstance::updateAppearance()
 {
-	auto terrain = cb->getTile(visitablePos())->getTerrainID();
+	const auto tile = cb->getTile(visitablePos());
+	if(!tile)
+	{
+		logGlobal->warn("Town is misplaced at (%d, %d, %d)", visitablePos().x,
+				visitablePos().y, visitablePos().z);
+		return;
+	}
+
+	auto terrain = tile->getTerrainID();
 	//FIXME: not the best way to do this
 	auto app = getObjectHandler()->getOverride(terrain, this);
 	if (app)