Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
- Blood: Repair some missing nullptr checks causing a crash upon relo…
…ading after dying.

* Reported by Spill.
  • Loading branch information
mjr4077au committed Jul 24, 2021
1 parent ef05eec commit a55b8f7
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions source/games/blood/src/ai.cpp
Expand Up @@ -1492,10 +1492,10 @@ void aiProcessDudes(void) {
if (IsPlayerSprite(pSprite) || pXSprite->health == 0) continue;
pXSprite->stateTimer = ClipLow(pXSprite->stateTimer-4, 0);

if (pXSprite->aiState->moveFunc)
if (pXSprite->aiState && pXSprite->aiState->moveFunc)
pXSprite->aiState->moveFunc(&bloodActors[pXSprite->reference]);

if (pXSprite->aiState->thinkFunc && (gFrameCount & 3) == (nSprite & 3))
if (pXSprite->aiState && pXSprite->aiState->thinkFunc && (gFrameCount & 3) == (nSprite & 3))
pXSprite->aiState->thinkFunc(&bloodActors[pXSprite->reference]);

switch (pSprite->type) {
Expand All @@ -1505,7 +1505,7 @@ void aiProcessDudes(void) {
GENDUDEEXTRA* pExtra = &gGenDudeExtra[pSprite->index];
if (pExtra->slaveCount > 0) updateTargetOfSlaves(pSprite);
if (pExtra->nLifeLeech >= 0) updateTargetOfLeech(pSprite);
if (pXSprite->stateTimer == 0 && pXSprite->aiState->nextState
if (pXSprite->stateTimer == 0 && pXSprite->aiState && pXSprite->aiState->nextState
&& (pXSprite->aiState->stateTicks > 0 || seqGetStatus(3, pSprite->extra) < 0)) {
aiGenDudeNewState(pSprite, pXSprite->aiState->nextState);
}
Expand All @@ -1517,7 +1517,7 @@ void aiProcessDudes(void) {
}
#endif
default:
if (pXSprite->stateTimer == 0 && pXSprite->aiState->nextState) {
if (pXSprite->stateTimer == 0 && pXSprite->aiState && pXSprite->aiState->nextState) {
if (pXSprite->aiState->stateTicks > 0)
aiNewState(actor, pXSprite->aiState->nextState);
else if (seqGetStatus(3, nXSprite) < 0)
Expand Down

0 comments on commit a55b8f7

Please sign in to comment.