Skip to content

Fix crash when destroying a gangzone while UseGangZoneCheck is active#1240

Open
krzysztofmotas wants to merge 1 commit into
openmultiplayer:masterfrom
krzysztofmotas:fix-gang-zones-crash
Open

Fix crash when destroying a gangzone while UseGangZoneCheck is active#1240
krzysztofmotas wants to merge 1 commit into
openmultiplayer:masterfrom
krzysztofmotas:fix-gang-zones-crash

Conversation

@krzysztofmotas

Copy link
Copy Markdown

Destroying a gangzone from within its enter/leave/click callback while checking was enabled crashed the server, because it removed the zone from the internal list mid-iteration. The update/click loops now snapshot zone IDs upfront and re-validate each one before dispatching its event, so a destroy mid-callback no longer corrupts the iteration.

Avoid iterator invalidation by taking a snapshot of checkingList IDs before iterating. Replace direct IGangZone* iteration with a DynamicArray<int> of IDs, store entered zones as IDs, and re-validate get(id)/checkingList.valid(id)/isShownForPlayer before use. Apply same snapshot approach in onPlayerClickMap. This prevents crashes when a gangzone is destroyed during dispatch.
@krzysztofmotas krzysztofmotas changed the title Fix crash when destroying a gangzone while GangZoneUseCheck is active Fix crash when destroying a gangzone while UseGangZoneCheck is active Jul 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant