(svn r8505) -Codechange: Ensure GRM allocated sprites will be below the original 16384 sprite limit. If not, fail and disable the NewGRF.

This commit is contained in:
peter1138 2007-02-01 01:40:46 +00:00
parent 913558797b
commit fd62bc46d0

View File

@ -2826,6 +2826,16 @@ static void ParamSet(byte *buf, int len)
case 0x08: /* General sprites */ case 0x08: /* General sprites */
switch (op) { switch (op) {
case 0: 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 */ /* 'Reserve' space at the current sprite ID */
src1 = _cur_spriteid; src1 = _cur_spriteid;
_cur_spriteid += count; _cur_spriteid += count;