diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2022-03-28 14:50:18 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2022-03-29 17:53:24 +0200 |
commit | a86ee60887e1ef0a83931ee761b542b493673c92 (patch) | |
tree | dc8e3678570942cd53f91be08a8d063fa1aa20b2 /src/gui/painting/qbackingstorerhisupport.cpp | |
parent | 7e4c2ac711c0b68133f06ab997a33f8bf7c4f734 (diff) |
Fix heap-use-after-free with rhi-based backingstore
Task-number: QTBUG-102030
Change-Id: I6b05007c6ae3d653197c5680b9fc5768b0e3690f
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'src/gui/painting/qbackingstorerhisupport.cpp')
-rw-r--r-- | src/gui/painting/qbackingstorerhisupport.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/gui/painting/qbackingstorerhisupport.cpp b/src/gui/painting/qbackingstorerhisupport.cpp index 4e87eefc34..9ba060080a 100644 --- a/src/gui/painting/qbackingstorerhisupport.cpp +++ b/src/gui/painting/qbackingstorerhisupport.cpp @@ -219,11 +219,12 @@ bool QBackingStoreRhiSupportWindowWatcher::eventFilter(QObject *obj, QEvent *eve auto it = m_rhiSupport->m_swapchains.find(window); if (it != m_rhiSupport->m_swapchains.end()) { qCDebug(lcQpaBackingStore) << "SurfaceAboutToBeDestroyed received for tracked window" << window << "cleaning up swapchain"; - it->reset(); + auto data = *it; m_rhiSupport->m_swapchains.erase(it); + data.reset(); // deletes 'this' } } - return QObject::eventFilter(obj, event); + return false; } QSurface::SurfaceType QBackingStoreRhiSupport::surfaceTypeForConfig(const QPlatformBackingStoreRhiConfig &config) |