From fd62bc46d08aa591a546c44445693eef9050911a Mon Sep 17 00:00:00 2001 From: peter1138 Date: Thu, 1 Feb 2007 01:40:46 +0000 Subject: [PATCH] (svn r8505) -Codechange: Ensure GRM allocated sprites will be below the original 16384 sprite limit. If not, fail and disable the NewGRF. --- src/newgrf.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 7d3277a0e8..e253cda386 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -2826,6 +2826,16 @@ static void ParamSet(byte *buf, int len) case 0x08: /* General sprites */ switch (op) { case 0: + /* Check if the allocated sprites will fit below the original sprite limit */ + if (_cur_spriteid + count >= 16384) { + grfmsg(0, "GRM: Unable to allocate %d sprites; try changing NewGRF order", count); + SETBIT(_cur_grfconfig->flags, GCF_DISABLED); + CLRBIT(_cur_grfconfig->flags, GCF_ACTIVATED); + + _skip_sprites = -1; + return; + } + /* 'Reserve' space at the current sprite ID */ src1 = _cur_spriteid; _cur_spriteid += count;