fix: Ban/Mute game client DC #2787
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #2782
Fixes a critical crash that occurred when UI controls (in this case, controls within BanMuteBox)
attempted to dispose themselves from within their own event handlers.
Changes:
handlers to defer disposal until after event processing completes
disposal queue, preventing "Collection was modified" exceptions when
nested DelayedDelete() calls occur during disposal
instead of crashing the entire client
The root cause was a double-disposal race condition where:
queue was modified during iteration
This fix ensures controls are disposed safely between frames using the
delayed deletion queue, and that nested deletion requests don't cause
collection modification exceptions.