mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-25 19:20:46 +00:00
SW: Fix crash issues when Track sprites are set up incorrectly
git-svn-id: https://svn.eduke32.com/eduke32@8485 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
e50cdbad0c
commit
f4fda7e646
3 changed files with 14 additions and 3 deletions
|
@ -817,6 +817,8 @@ KillSprite(int16_t SpriteNum)
|
|||
void ChangeState(short SpriteNum, STATEp statep)
|
||||
{
|
||||
USERp u = User[SpriteNum];
|
||||
if (u == nullptr)
|
||||
return;
|
||||
|
||||
u->Tics = 0;
|
||||
u->State = u->StateStart = statep;
|
||||
|
|
|
@ -642,7 +642,7 @@ TrackSetup(void)
|
|||
{
|
||||
int i, nexti;
|
||||
auto const sp = (uspritetype const *)&sprite[headspritestat[STAT_TRACK+ndx]];
|
||||
buildprintf("WARNING: Did not find first point of Track Number %d, x %d, y %d", ndx, sp->x, sp->y);
|
||||
buildprintf("WARNING: Did not find first point of Track Number %d, x %d, y %d\n", ndx, sp->x, sp->y);
|
||||
for (i=headspritestat[STAT_TRACK+ndx]; i>=0; i=nexti)
|
||||
{
|
||||
// neuter the track's sprite list
|
||||
|
@ -1598,6 +1598,12 @@ PlaceActorsOnTracks(void)
|
|||
|
||||
NextActorTrackPoint(i);
|
||||
|
||||
if (Track[u->track].NumPoints == 0)
|
||||
{
|
||||
buildprintf("WARNING: Sprite %d (%d, %d) placed on track %d with no points!\n", i, TrackerCast(sp->x), TrackerCast(sp->y), u->track);
|
||||
continue;
|
||||
}
|
||||
|
||||
// check angle in the "forward" direction
|
||||
sp->ang = getangle((tpoint + u->point)->x - sp->x, (tpoint + u->point)->y - sp->y);
|
||||
}
|
||||
|
|
|
@ -4949,8 +4949,11 @@ SetSuicide(short SpriteNum)
|
|||
SPRITEp sp = &sprite[SpriteNum];
|
||||
USERp u = User[SpriteNum];
|
||||
|
||||
SET(u->Flags, SPR_SUICIDE);
|
||||
u->RotNum = 0;
|
||||
if (u != nullptr)
|
||||
{
|
||||
SET(u->Flags, SPR_SUICIDE);
|
||||
u->RotNum = 0;
|
||||
}
|
||||
ChangeState(SpriteNum, s_Suicide);
|
||||
#else
|
||||
// this will NOT work because
|
||||
|
|
Loading…
Reference in a new issue