From 6b9bff753188dde4678f78f0e12eeb618435b9c8 Mon Sep 17 00:00:00 2001 From: rubidium Date: Tue, 9 Oct 2007 15:28:40 +0000 Subject: (svn r11233) -Fix [FS#1303]: handle some wrong written station NewGRFs a little more gracefully than segfaulting. --- src/newgrf.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 2d9ed343f..c993e1e01 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -2864,6 +2864,12 @@ static void StationMapSpriteGroup(byte *buf, uint8 idcount, uint8 cidcount) for (uint i = 0; i < idcount; i++) { uint8 stid = buf[3 + i]; StationSpec *statspec = _cur_grffile->stations[stid]; + + if (statspec == NULL) { + grfmsg(1, "StationMapSpriteGroup: Station with ID 0x%02X does not exist, skipping", stid); + return; + } + byte *bp = &buf[4 + idcount]; for (uint c = 0; c < cidcount; c++) { @@ -2896,6 +2902,10 @@ static void StationMapSpriteGroup(byte *buf, uint8 idcount, uint8 cidcount) for (uint i = 0; i < idcount; i++) { uint8 stid = buf[3 + i]; StationSpec *statspec = _cur_grffile->stations[stid]; + if (statspec == NULL) { + grfmsg(1, "StationMapSpriteGroup: Station with ID 0x%02X does not exist, skipping", stid); + continue; + } statspec->spritegroup[CT_DEFAULT] = _cur_grffile->spritegroups[groupid]; statspec->grffile = _cur_grffile; -- cgit v1.2.3-54-g00ecf