Prerequisites
Game Version
Bug Description
Destroyed windows are only removed from the modal stack when they are on top.
For example, with a stack of B → A, destroying A leaves B → freed A. When B closes, the freed pointer becomes the stack head. The next mouse event calls winPointInChild() on it and crashes.
Destroyed windows should be removed from the entire modal stack.
Reproduction Steps
- Open modal window A.
- Open modal window B above it.
- Destroy A while B remains open.
- Close B.
- Move the mouse.
Additional Context
This was observed with 0xDEADBEEF passed to GameWindow::winPointInChild(). The affected modal cleanup exists in both the Generals and Zero Hour window managers.
Prerequisites
Game Version
Bug Description
Destroyed windows are only removed from the modal stack when they are on top.
For example, with a stack of
B → A, destroying A leavesB → freed A. When B closes, the freed pointer becomes the stack head. The next mouse event callswinPointInChild()on it and crashes.Destroyed windows should be removed from the entire modal stack.
Reproduction Steps
Additional Context
This was observed with
0xDEADBEEFpassed toGameWindow::winPointInChild(). The affected modal cleanup exists in both the Generals and Zero Hour window managers.