diff options
author | Jan-Arve Sæther <jan-arve.saether@nokia.com> | 2009-12-04 15:16:49 (GMT) |
---|---|---|
committer | Jan-Arve Sæther <jan-arve.saether@nokia.com> | 2009-12-04 15:41:02 (GMT) |
commit | 2e3ecbb0b401aa29d4bbc2fe5df8cfb9f541a693 (patch) | |
tree | 9902b0d3571914c98dcb239b77f9fb37706af0d0 /src/corelib | |
parent | 9e4cefd82d3c4f67f8f182ed3956f5e92e4356e4 (diff) | |
download | Qt-2e3ecbb0b401aa29d4bbc2fe5df8cfb9f541a693.zip Qt-2e3ecbb0b401aa29d4bbc2fe5df8cfb9f541a693.tar.gz Qt-2e3ecbb0b401aa29d4bbc2fe5df8cfb9f541a693.tar.bz2 |
Make sure that QtGui links with QtCore for the win32-icc mkspec.
Fix it by exporting QObjectData. Since this is a compiler bug we will only
export it for the compiler that has this problem. (Intel Compiler on Windows)
The Intel compiler seems to inline the destructor of QObject (or at least
parts of it) even if it is declared virtual. Thus, it seems that the
destruction of the QScopedPointer<QObjectData> member is inlined into QtGui,
and that code will eventually call the destructor of QObjectData, and since
QObjectData was not exported from QtCore it would crash.
Reviewed-by: Olivier Goffart
Diffstat (limited to 'src/corelib')
-rw-r--r-- | src/corelib/kernel/qobject.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/corelib/kernel/qobject.h b/src/corelib/kernel/qobject.h index 340498f..68475e5 100644 --- a/src/corelib/kernel/qobject.h +++ b/src/corelib/kernel/qobject.h @@ -91,7 +91,11 @@ template<typename T> inline QList<T> qFindChildren(const QObject *, const QRegEx # endif #endif +#if defined(__INTEL_COMPILER) && defined(Q_OS_WIN) +class Q_CORE_EXPORT QObjectData { +#else class QObjectData { +#endif public: virtual ~QObjectData() = 0; QObject *q_ptr; |