diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-08-08 13:24:06 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-08-08 14:23:31 +0200 |
commit | 657a4ccf4c493ee0a0e5a5f5d15d644d3a1f49b1 (patch) | |
tree | 6ad2e8f00eb198748596b86fe6b34d0bada75474 | |
parent | fdbf1988ed2346b384e8052c893698fa22c76145 (diff) |
fix storing/loading of null string values
There was no distinction between empty strings and null strings when
storing/loading values. This led to surprising empty strings where
undefined values were expected in JavaScript.
Change-Id: Iadb0507632e468a6da58ef6c0bda7916d350e49e
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
-rw-r--r-- | src/lib/corelib/tools/persistence.cpp | 13 | ||||
-rw-r--r-- | src/lib/corelib/tools/propertyfinder.cpp | 2 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/lib/corelib/tools/persistence.cpp b/src/lib/corelib/tools/persistence.cpp index 5e89b0ce2..8556bae55 100644 --- a/src/lib/corelib/tools/persistence.cpp +++ b/src/lib/corelib/tools/persistence.cpp @@ -235,9 +235,17 @@ QDataStream &PersistentPool::stream() return m_stream; } +const int StringNotFoundId = -1; +const int NullStringId = -2; + void PersistentPool::storeString(const QString &t) { - int id = m_inverseStringStorage.value(t, -1); + if (t.isNull()) { + m_stream << NullStringId; + return; + } + + int id = m_inverseStringStorage.value(t, StringNotFoundId); if (id < 0) { id = m_lastStoredStringId++; m_inverseStringStorage.insert(t, id); @@ -249,6 +257,9 @@ void PersistentPool::storeString(const QString &t) QString PersistentPool::loadString(int id) { + if (id == NullStringId) + return QString(); + QBS_CHECK(id >= 0); if (id >= m_stringStorage.count()) { diff --git a/src/lib/corelib/tools/propertyfinder.cpp b/src/lib/corelib/tools/propertyfinder.cpp index d5ef0d648..aaa974e22 100644 --- a/src/lib/corelib/tools/propertyfinder.cpp +++ b/src/lib/corelib/tools/propertyfinder.cpp @@ -82,7 +82,7 @@ void PropertyFinder::findModuleValues(const QVariantMap &properties, bool search void PropertyFinder::addToList(const QVariant &value) { - if (value.isValid() && !m_values.contains(value)) + if (!value.isNull() && !m_values.contains(value)) m_values << value; } |