Accessibility: make sure right objects are cached on linux
authorFrederik Gladhorn <frederik.gladhorn@digia.com>
Thu, 18 Oct 2012 17:31:59 +0000 (19:31 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Thu, 18 Oct 2012 22:44:54 +0000 (00:44 +0200)
The linux test would actually fail because the qobjects created
could end up having the same address (create-delete-create...).
After an object is deleted, it's not instantly removed from the
cache of valid objects.
Instead it would stay in the list with it's smart pointer becoming zero.

This patch adds the missing null pointer check so we are always up to date.

Change-Id: Ia7be14741d4798c2b8e75cb7127298c73cf206ef
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
src/platformsupport/linuxaccessibility/atspiadaptor.cpp

index bea84d0..54ecf53 100644 (file)
@@ -1540,7 +1540,7 @@ QString AtSpiAdaptor::pathForInterface(const QAIPointer &interface, bool inDestr
     quintptr uintptr = reinterpret_cast<quintptr>(interfaceWithObject->object());
     path.prepend(QLatin1String(QSPI_OBJECT_PATH_PREFIX) + QString::number(uintptr));
 
-    if (!inDestructor && !m_handledObjects.contains(uintptr))
+    if (!inDestructor && (!m_handledObjects.contains(uintptr) || m_handledObjects.value(uintptr) == 0))
         m_handledObjects[uintptr] = QPointer<QObject>(interfaceWithObject->object());
 
     return path;