summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan-Arve Sæther <jan-arve.saether@nokia.com>2009-12-04 15:16:49 (GMT)
committerJan-Arve Sæther <jan-arve.saether@nokia.com>2009-12-04 15:41:02 (GMT)
commit2e3ecbb0b401aa29d4bbc2fe5df8cfb9f541a693 (patch)
tree9902b0d3571914c98dcb239b77f9fb37706af0d0
parent9e4cefd82d3c4f67f8f182ed3956f5e92e4356e4 (diff)
downloadQt-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
-rw-r--r--src/corelib/kernel/qobject.h4
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;