changeset 13975:e8007147592b draft

(svn r18513) -Fix [FS#3379]: sometimes NewGRFs throw invalid data at OpenTTD and that triggered a check... that if a has to be between b and c (inclusive) then c must be bigger than or equal to b (and definitely not smaller)
author rubidium <rubidium@openttd.org>
date Wed, 16 Dec 2009 00:06:51 +0000
parents 2d23b551b221
children 9e8eabc11352
files src/newgrf_industrytiles.cpp
diffstat 1 files changed, 2 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/newgrf_industrytiles.cpp
+++ b/src/newgrf_industrytiles.cpp
@@ -253,10 +253,10 @@
 	NewIndustryTileResolver(&object, gfx, ti->tile, i);
 
 	group = SpriteGroup::Resolve(inds->grf_prop.spritegroup, &object);
-	if (group == NULL || group->type != SGT_TILELAYOUT) {
+	const TileLayoutSpriteGroup *tlgroup = (const TileLayoutSpriteGroup *)group;
+	if (group == NULL || group->type != SGT_TILELAYOUT || tlgroup->num_sprites == 0) {
 		return false;
 	} else {
-		const TileLayoutSpriteGroup *tlgroup = (const TileLayoutSpriteGroup *)group;
 		/* Limit the building stage to the number of stages supplied. */
 		byte stage = GetIndustryConstructionStage(ti->tile);
 		stage = Clamp(stage - 4 + tlgroup->num_sprites, 0, tlgroup->num_sprites - 1);