Skip to content
This repository has been archived by the owner. It is now read-only.

Fix bug triggering gnNumTempPedList assertion #1257

Merged
merged 2 commits into from Jul 27, 2021
Merged
Changes from all commits
Commits
File filter
Filter file types
Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.

Always

Just for now

@@ -392,8 +392,20 @@ CPed::BuildPedLists(void)
if (ped != this && !ped->bInVehicle) {
float dist = (ped->GetPosition() - GetPosition()).Magnitude2D();
if (nThreatReactionRangeMultiplier * 30.0f > dist) {
#ifdef FIX_BUGS
// If the gap ped list is full, sort it and truncate it
// before pushing more unsorted peds
if( gnNumTempPedList == ARRAY_SIZE(gapTempPedList) - 1 )

This comment has been minimized.

@erorcun

erorcun Jul 27, 2021
Collaborator

Instead of doing this, you can break all loops. It's clear that it can't continue further this point, because gapTempPedList will be full.

{
gapTempPedList[gnNumTempPedList] = nil;
SortPeds(gapTempPedList, 0, gnNumTempPedList - 1);
gnNumTempPedList = ARRAY_SIZE(m_nearPeds);

This comment has been minimized.

@erorcun

erorcun Jul 27, 2021
Collaborator

Why? m_nearPeds isn't used in this loop at all

}

This comment has been minimized.

@erorcun

erorcun Jul 27, 2021
Collaborator

Why don't you break here? It's clear that it can't continue anymore.

#endif

gapTempPedList[gnNumTempPedList] = ped;
gnNumTempPedList++;
// NOTE: We cannot absolutely fill the gap list, as the list is null-terminated before being passed to SortPeds
assert(gnNumTempPedList < ARRAY_SIZE(gapTempPedList));
}
}