aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2014-08-08 13:24:06 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2014-08-08 14:23:31 +0200
commit657a4ccf4c493ee0a0e5a5f5d15d644d3a1f49b1 (patch)
tree6ad2e8f00eb198748596b86fe6b34d0bada75474
parentfdbf1988ed2346b384e8052c893698fa22c76145 (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.cpp13
-rw-r--r--src/lib/corelib/tools/propertyfinder.cpp2
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;
}