diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/newgrf_object.cpp | 10 |
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; |