diff options
author | Axel Spoerl <[email protected]> | 2025-06-12 20:41:31 +0200 |
---|---|---|
committer | Axel Spoerl <[email protected]> | 2025-06-14 17:51:17 +0200 |
commit | 3416d28c8b0fa8e5cd6622fc86fe6fc5aae9222b (patch) | |
tree | 9d5880e1f6b5d68544333bb975fa116568b98c01 /examples/sql/books/books.pro | |
parent | e45916fadaa4e0d98ef83b3ae32f87cda436c93e (diff) |
QWindowsScreenManager::removeScreen() read an element from m_screens
and removed it. If the removed screen was not the primary screen,
QWindowSystemInterface::flushWindowSystemEvents() is called.
When removeScreen() is called from handleScreenChanges() in the same
class, flushing window events can lead to a re-entry. That is e.g. the
case when a RDP connection is closed and the server removes the virtual
screen.
QWindowScreenManager::removeScreen() removes the platform screen only
at the very end, which means that m_screens contains a stale pointer.
The re-entry can therefore crash with a double delete.
Take the platform screen at the beginning of the method, to make it
safe for re-entry.
Fixes: QTBUG-135337
Pick-to: 6.10 6.9 6.8 6.5
Change-Id: Id18a6fb3e72922bcdb62c9e79857b6bb713c0c1b
Reviewed-by: Tor Arne Vestbø <[email protected]>
Reviewed-by: Volker Hilsheimer <[email protected]>
Reviewed-by: Wladimir Leuschner <[email protected]>
Diffstat (limited to 'examples/sql/books/books.pro')
0 files changed, 0 insertions, 0 deletions