浏览代码

Fix null tile being processed in CGTownInstance::updateAppearance

Michał Zaremba 1 周之前
父节点
当前提交
90924a74ef
共有 1 个文件被更改,包括 9 次插入1 次删除
  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)