From f0728ca1d16b88a9327313e115554e3c6ff0a93f Mon Sep 17 00:00:00 2001 From: rubidium Date: Wed, 16 Dec 2009 00:06:51 +0000 Subject: (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) --- src/newgrf_industrytiles.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/newgrf_industrytiles.cpp b/src/newgrf_industrytiles.cpp index a661fd018..08ecac408 100644 --- a/src/newgrf_industrytiles.cpp +++ b/src/newgrf_industrytiles.cpp @@ -253,10 +253,10 @@ bool DrawNewIndustryTile(TileInfo *ti, Industry *i, IndustryGfx gfx, const Indus 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); -- cgit v1.2.3-70-g09d2