Go to file
João Abecasis 5a92dd6124 Detect incompatibilities in repeated type registration
QMetaType used to register a typeName and factory functions for
creation/destruction of objects. While it would be possible for a single
type name to be registered matching different actual types and memory
layouts, there was little that could be done about it.

Now that QMetaType is tracking type information with a direct impact on
data layout and ABI (size and type flags) it is important that we check
and detect binary incompatibilities as early as possible.

[Such incompatibilities could arise from type name re-use (technically,
ODR violations) or, more commonly, as version mismatch between different
shared libraries or plugins.]

Only type size and flags are checked as function pointers to inline and
template or otherwise non-exported functions could trivially differ
across translation units and shared libraries.

When registering typedef types, a check is made to ensure the same name
doesn't get registered as different types.

Change-Id: I8211c3de75d4854ce8fafdb620d3a931c206e0c3
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
2012-02-07 09:47:51 +01:00
bin Move QtConcurrent into its own module 2012-02-05 17:49:16 +01:00
config.tests Improve sysroot handling with regards to configure tests. 2012-02-03 18:59:09 +01:00
dist Remove QMetaType::unregisterType(). 2012-02-07 08:53:18 +01:00
doc/src QString: Make convert to number methods only use C locale 2012-02-05 17:49:42 +01:00
examples Move QtConcurrent into its own module 2012-02-05 17:49:16 +01:00
lib Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
mkspecs Enable basic gesture support for WEC7. 2012-02-06 05:15:11 +01:00
qmake qmake: Work around MSVC compiler bug. 2012-02-05 19:03:18 +01:00
src Detect incompatibilities in repeated type registration 2012-02-07 09:47:51 +01:00
tests Detect incompatibilities in repeated type registration 2012-02-07 09:47:51 +01:00
tools Windows configure: make -mp affect the Qt build itself 2012-02-01 19:02:28 +01:00
util Avoid non-standard indentation of license headers. 2012-01-30 16:40:10 +01:00
.gitattributes Added .tag file with Git revision. 2011-05-03 16:23:49 +02:00
.gitignore Update .gitignore to ignore qmake/qmake_pch.pch 2012-02-03 06:05:02 +01:00
.tag Added .tag file with Git revision. 2011-05-03 16:23:49 +02:00
configure Use $CFG_ARCH even if src/corelib/arch/$CFG_ARCH does not exist 2012-02-04 22:40:06 +01:00
configure.exe Add a new QT_NO_SSL feature macro. 2012-01-06 11:19:23 +01:00
header.BSD Remove "All rights reserved" line from license headers. 2012-01-30 03:54:59 +01:00
header.FDL Remove "All rights reserved" line from license headers. 2012-01-30 03:54:59 +01:00
header.LGPL Remove "All rights reserved" line from license headers. 2012-01-30 03:54:59 +01:00
header.LGPL-ONLY Remove "All rights reserved" line from license headers. 2012-01-30 03:54:59 +01:00
INSTALL Remove Symbian specific code from qtbase. 2012-01-31 07:08:31 +01:00
LGPL_EXCEPTION.txt Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
LICENSE.FDL Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
LICENSE.LGPL Update contact information in license headers. 2012-01-23 04:04:33 +01:00
LICENSE.PREVIEW.COMMERCIAL Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
qtbase.pro Remove Symbian specific code from qtbase. 2012-01-31 07:08:31 +01:00
sync.profile Make syncqt ignore qsystemdetection.h and qcompilerdetection.h 2012-02-07 03:40:40 +01:00