QSharedPointer: remove two emtpy functions.
As the comments says:they are broken by design, and replaced with other functions. The purpose of their existence is for BIC with Qt4.5. Change-Id: I9453f816a7b7c6812499b89b7c60f0fd99dea27c Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
e640c3bcfe
commit
801832b8a3
@ -1380,47 +1380,14 @@ Q_GLOBAL_STATIC(KnownPointers, knownPointers)
|
|||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
namespace QtSharedPointer {
|
namespace QtSharedPointer {
|
||||||
Q_CORE_EXPORT void internalSafetyCheckAdd(const volatile void *);
|
|
||||||
Q_CORE_EXPORT void internalSafetyCheckRemove(const volatile void *);
|
|
||||||
Q_AUTOTEST_EXPORT void internalSafetyCheckCleanCheck();
|
Q_AUTOTEST_EXPORT void internalSafetyCheckCleanCheck();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\internal
|
\internal
|
||||||
*/
|
*/
|
||||||
void QtSharedPointer::internalSafetyCheckAdd(const volatile void *)
|
void QtSharedPointer::internalSafetyCheckAdd(const void *d_ptr, const volatile void *ptr)
|
||||||
{
|
{
|
||||||
// Qt 4.5 compatibility
|
|
||||||
// this function is broken by design, so it was replaced with internalSafetyCheckAdd2
|
|
||||||
//
|
|
||||||
// it's broken because we tracked the pointers added and
|
|
||||||
// removed from QSharedPointer, converted to void*.
|
|
||||||
// That is, this is supposed to track the "top-of-object" pointer in
|
|
||||||
// case of multiple inheritance.
|
|
||||||
//
|
|
||||||
// However, it doesn't work well in some compilers:
|
|
||||||
// if you create an object with a class of type A and the last reference
|
|
||||||
// is dropped of type B, then the value passed to internalSafetyCheckRemove could
|
|
||||||
// be different than was added. That would leave dangling addresses.
|
|
||||||
//
|
|
||||||
// So instead, we track the pointer by the d-pointer instead.
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\internal
|
|
||||||
*/
|
|
||||||
void QtSharedPointer::internalSafetyCheckRemove(const volatile void *)
|
|
||||||
{
|
|
||||||
// Qt 4.5 compatibility
|
|
||||||
// see comments above
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\internal
|
|
||||||
*/
|
|
||||||
void QtSharedPointer::internalSafetyCheckAdd2(const void *d_ptr, const volatile void *ptr)
|
|
||||||
{
|
|
||||||
// see comments above for the rationale for this function
|
|
||||||
KnownPointers *const kp = knownPointers();
|
KnownPointers *const kp = knownPointers();
|
||||||
if (!kp)
|
if (!kp)
|
||||||
return; // end-game: the application is being destroyed already
|
return; // end-game: the application is being destroyed already
|
||||||
@ -1453,7 +1420,7 @@ void QtSharedPointer::internalSafetyCheckAdd2(const void *d_ptr, const volatile
|
|||||||
/*!
|
/*!
|
||||||
\internal
|
\internal
|
||||||
*/
|
*/
|
||||||
void QtSharedPointer::internalSafetyCheckRemove2(const void *d_ptr)
|
void QtSharedPointer::internalSafetyCheckRemove(const void *d_ptr)
|
||||||
{
|
{
|
||||||
KnownPointers *const kp = knownPointers();
|
KnownPointers *const kp = knownPointers();
|
||||||
if (!kp)
|
if (!kp)
|
||||||
|
@ -105,8 +105,8 @@ namespace QtSharedPointer {
|
|||||||
template <class X, class Y> QSharedPointer<X> copyAndSetPointer(X * ptr, const QSharedPointer<Y> &src);
|
template <class X, class Y> QSharedPointer<X> copyAndSetPointer(X * ptr, const QSharedPointer<Y> &src);
|
||||||
|
|
||||||
// used in debug mode to verify the reuse of pointers
|
// used in debug mode to verify the reuse of pointers
|
||||||
Q_CORE_EXPORT void internalSafetyCheckAdd2(const void *, const volatile void *);
|
Q_CORE_EXPORT void internalSafetyCheckAdd(const void *, const volatile void *);
|
||||||
Q_CORE_EXPORT void internalSafetyCheckRemove2(const void *);
|
Q_CORE_EXPORT void internalSafetyCheckRemove(const void *);
|
||||||
|
|
||||||
template <class T, typename Klass, typename RetVal>
|
template <class T, typename Klass, typename RetVal>
|
||||||
inline void executeDeleter(T *t, RetVal (Klass:: *memberDeleter)())
|
inline void executeDeleter(T *t, RetVal (Klass:: *memberDeleter)())
|
||||||
@ -247,7 +247,7 @@ namespace QtSharedPointer {
|
|||||||
}
|
}
|
||||||
static void safetyCheckDeleter(ExternalRefCountData *self)
|
static void safetyCheckDeleter(ExternalRefCountData *self)
|
||||||
{
|
{
|
||||||
internalSafetyCheckRemove2(self);
|
internalSafetyCheckRemove(self);
|
||||||
deleter(self);
|
deleter(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -290,7 +290,7 @@ namespace QtSharedPointer {
|
|||||||
}
|
}
|
||||||
static void safetyCheckDeleter(ExternalRefCountData *self)
|
static void safetyCheckDeleter(ExternalRefCountData *self)
|
||||||
{
|
{
|
||||||
internalSafetyCheckRemove2(self);
|
internalSafetyCheckRemove(self);
|
||||||
deleter(self);
|
deleter(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -374,7 +374,7 @@ namespace QtSharedPointer {
|
|||||||
Basic<T>::internalConstruct(ptr);
|
Basic<T>::internalConstruct(ptr);
|
||||||
if (ptr) d->setQObjectShared(ptr, true);
|
if (ptr) d->setQObjectShared(ptr, true);
|
||||||
#ifdef QT_SHAREDPOINTER_TRACK_POINTERS
|
#ifdef QT_SHAREDPOINTER_TRACK_POINTERS
|
||||||
if (ptr) internalSafetyCheckAdd2(d, ptr);
|
if (ptr) internalSafetyCheckAdd(d, ptr);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user