Duke3d: fix longstanding bug with unfrozen GREENSLIME

This fixes some undefined behavior that occurred as a result of reading far past the bounds of slimeFrames[].
This commit is contained in:
Richard C. Gobeille 2020-06-11 07:03:06 -07:00 committed by Christoph Oelckers
parent 575541e32c
commit 39b1c3cee9

View file

@ -4682,7 +4682,7 @@ ACTOR_STATIC void G_MoveActors(void)
if (pData[3] > 280)
{
pSprite->pal = 0;
pData[0] = 0;
pData[0] = pData[3] = 0;
goto next_sprite;
}
A_Fall(spriteNum);
@ -4783,6 +4783,8 @@ ACTOR_STATIC void G_MoveActors(void)
{
static const char slimeFrames[] = { 5, 5, 6, 6, 7, 7, 6, 5 };
Bassert(pData[3] < ARRAY_SSIZE(slimeFrames));
pSprite->picnum = GREENSLIME + slimeFrames[pData[3]];
if (pData[3] == 5)