G_WriteAllGhostTics: check buffer size after each player's ghost data

Instead of checking it after ALL player ghost data. This
is less likely to write past the end of the demo buffer.
This commit is contained in:
James R 2024-01-29 02:24:55 -08:00 committed by NepDisk
parent eac15b8542
commit 061c98a7d2

View file

@ -665,6 +665,7 @@ void G_GhostAddHit(INT32 playernum, mobj_t *victim)
void G_WriteAllGhostTics(void)
{
boolean toobig = false;
INT32 i, counter = leveltime;
for (i = 0; i < MAXPLAYERS; i++)
{
@ -681,12 +682,18 @@ void G_WriteAllGhostTics(void)
WRITEUINT8(demobuf.p, i);
G_WriteGhostTic(players[i].mo, i);
// attention here for the ticcmd size!
// latest demos with mouse aiming byte in ticcmd
if (demobuf.p >= demobuf.end - (13 + 9 + 9))
{
toobig = true;
break;
}
}
WRITEUINT8(demobuf.p, 0xFF);
// attention here for the ticcmd size!
// latest demos with mouse aiming byte in ticcmd
if (demobuf.p >= demobuf.end - (13 + 9 + 9))
if (toobig)
{
G_CheckDemoStatus(); // no more space
return;