summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools/qsharedpointer_impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/tools/qsharedpointer_impl.h')
-rw-r--r--src/corelib/tools/qsharedpointer_impl.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h
index ebab027196..58010dd8d9 100644
--- a/src/corelib/tools/qsharedpointer_impl.h
+++ b/src/corelib/tools/qsharedpointer_impl.h
@@ -192,7 +192,9 @@ namespace QtSharedPointer {
#ifndef QT_NO_QOBJECT
Q_CORE_EXPORT static ExternalRefCountData *getAndRef(const QObject *);
Q_CORE_EXPORT void setQObjectShared(const QObject *, bool enable);
+ Q_CORE_EXPORT void checkQObjectShared(const QObject *);
#endif
+ inline void checkQObjectShared(...) { }
inline void setQObjectShared(...) { }
};
// sizeof(ExternalRefCount) = 12 (32-bit) / 16 (64-bit)
@@ -432,10 +434,12 @@ namespace QtSharedPointer {
tmp = o->strongref.load(); // failed, try again
}
- if (tmp > 0)
+ if (tmp > 0) {
o->weakref.ref();
- else
+ } else {
+ o->checkQObjectShared(actual);
o = 0;
+ }
}
qSwap(d, o);