summaryrefslogtreecommitdiffstats
path: root/src/gui/painting/qbackingstorerhisupport.cpp
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2022-03-28 14:50:18 +0200
committerLaszlo Agocs <laszlo.agocs@qt.io>2022-03-29 17:53:24 +0200
commita86ee60887e1ef0a83931ee761b542b493673c92 (patch)
treedc8e3678570942cd53f91be08a8d063fa1aa20b2 /src/gui/painting/qbackingstorerhisupport.cpp
parent7e4c2ac711c0b68133f06ab997a33f8bf7c4f734 (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.cpp5
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)