summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/newgrf_object.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/newgrf_object.cpp b/src/newgrf_object.cpp
index f6b2768c9..84d6187b2 100644
--- a/src/newgrf_object.cpp
+++ b/src/newgrf_object.cpp
@@ -241,6 +241,7 @@ static uint32 ObjectGetVariable(const ResolverObject *object, byte variable, byt
/* Allow these, but find the closest town. */
case 0x45:
case 0x46:
+ if (!IsValidTile(tile)) goto unhandled;
t = ClosestTownFromTile(tile, UINT_MAX);
break;
@@ -257,11 +258,11 @@ static uint32 ObjectGetVariable(const ResolverObject *object, byte variable, byt
* 0x63: Animation counter of nearby tile, see above.
*/
default:
- DEBUG(grf, 1, "Unhandled object property 0x%X", variable);
-
- *available = false;
- return UINT_MAX;
+ goto unhandled;
}
+
+ /* If there's an invalid tile, then we don't have enough information at all. */
+ if (!IsValidTile(tile)) goto unhandled;
} else {
t = o->town;
}
@@ -313,6 +314,7 @@ static uint32 ObjectGetVariable(const ResolverObject *object, byte variable, byt
case 0x64: return GetCountAndDistanceOfClosestInstance(parameter, object->grffile->grfid, tile, o);
}
+unhandled:
DEBUG(grf, 1, "Unhandled object property 0x%X", variable);
*available = false;