From fed6c35461e1b98af50e5f3c30aaacee45969472 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 2 Dec 2016 09:01:20 +0100 Subject: QAccessibleCache: Replace Q_GLOBAL_STATIC by instance pointer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QAccessibleCache is a QObject which emits signals at destruction time. This can lead to crashes in situations where the library is unloaded after QApplication has been deleted, for example in PySide2. Change it to a pointer instance variable that is cleaned up by a post routine. Task-number: PYSIDE-452 Change-Id: If0d673c7dfe33c8d2d7298bc081824f9d6d7efdc Reviewed-by: Jan Arve Sæther --- src/gui/accessible/qaccessiblecache.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/gui/accessible') diff --git a/src/gui/accessible/qaccessiblecache.cpp b/src/gui/accessible/qaccessiblecache.cpp index 43c4b15cb0..097634c0a3 100644 --- a/src/gui/accessible/qaccessiblecache.cpp +++ b/src/gui/accessible/qaccessiblecache.cpp @@ -49,11 +49,21 @@ QT_BEGIN_NAMESPACE \brief Maintains a cache of accessible interfaces. */ -Q_GLOBAL_STATIC(QAccessibleCache, qAccessibleCache) +static QAccessibleCache *accessibleCache = nullptr; + +static void cleanupAccessibleCache() +{ + delete accessibleCache; + accessibleCache = Q_NULLPTR; +} QAccessibleCache *QAccessibleCache::instance() { - return qAccessibleCache; + if (!accessibleCache) { + accessibleCache = new QAccessibleCache; + qAddPostRoutine(cleanupAccessibleCache); + } + return accessibleCache; } /* -- cgit v1.2.3