summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVladimir Belyavsky <belyavskyv@gmail.com>2023-10-22 11:07:15 +0300
committerVladimir Belyavsky <belyavskyv@gmail.com>2023-11-02 20:55:46 +0300
commit888f786ff054d2216ddb669992ffe5aeae7f82d4 (patch)
treee76ae831d0fe3858c6e2952202fd7d4c24e1be00
parent716aa4845a62137ad2840c87e5dd54e04a6ee736 (diff)
Compositor: fix potential nullptr access
Check m_binding under the mutex to avoid data race and potentially crash on nullptr access. Fixes: QTBUG-118455 Pick-to: 6.6 6.5 Change-Id: I169c90226616e14461875aae1c72bbba2b36de8c Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
-rw-r--r--src/core/compositor/compositor.cpp8
1 files changed, 2 insertions, 6 deletions
diff --git a/src/core/compositor/compositor.cpp b/src/core/compositor/compositor.cpp
index 6bfb3140f..4d0648e1a 100644
--- a/src/core/compositor/compositor.cpp
+++ b/src/core/compositor/compositor.cpp
@@ -93,10 +93,8 @@ void Compositor::Observer::unbind()
Compositor::Handle<Compositor> Compositor::Observer::compositor()
{
- if (!m_binding)
- return nullptr;
g_bindings.lock();
- if (m_binding->compositor)
+ if (m_binding && m_binding->compositor)
return m_binding->compositor; // delay unlock
g_bindings.unlock();
return nullptr;
@@ -127,10 +125,8 @@ void Compositor::unbind()
Compositor::Handle<Compositor::Observer> Compositor::observer()
{
- if (!m_binding)
- return nullptr;
g_bindings.lock();
- if (m_binding->observer)
+ if (m_binding && m_binding->observer)
return m_binding->observer; // delay unlock
g_bindings.unlock();
return nullptr;