aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Vogt <matthew.vogt@nokia.com>2012-05-25 10:01:21 +1000
committerQt by Nokia <qt-info@nokia.com>2012-05-25 02:13:38 +0200
commit1a93548e6b8095e211ea6ad8e074db4741b6801f (patch)
treef2abd41cfd80f732d7c7efc73a315554cc2d1a00
parent723ae1c9502af30889e1edd5d0a2d5800bbd42d8 (diff)
Ensure cached moduleName matches when avoiding conversion
Multiple plugins can have their module strings loaded at the same logical address, so simple comparison of the string addresses fails between multiple plugins. Change-Id: If0bcbaaafa595e9581db1f3e480f7b1bffbae101 Reviewed-by: Martin Jones <martin.jones@nokia.com>
-rw-r--r--src/qml/qml/qqmlmetatype.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/qml/qml/qqmlmetatype.cpp b/src/qml/qml/qqmlmetatype.cpp
index 87c39b1859..416caa9c63 100644
--- a/src/qml/qml/qqmlmetatype.cpp
+++ b/src/qml/qml/qqmlmetatype.cpp
@@ -200,7 +200,9 @@ static QHashedString moduletoUtf8(const char *module)
static const char *lastModule = 0;
static QHashedString lastModuleStr;
- if (lastModule != module) {
+ // Separate plugins may have different strings at the same address
+ QHashedCStringRef currentModule(module, ::strlen(module));
+ if ((lastModule != module) || (lastModuleStr.hash() != currentModule.hash())) {
lastModuleStr = QString::fromUtf8(module);
lastModuleStr.hash();
lastModule = module;