fix loading array from kvstore if size diffs in json 49/34249/1
authorKrzysztof Dynowski <k.dynowski@samsung.com>
Thu, 22 Jan 2015 10:29:14 +0000 (11:29 +0100)
committerKrzysztof Dynowski <k.dynowski@samsung.com>
Thu, 22 Jan 2015 10:29:14 +0000 (11:29 +0100)
[Bug/Feature]       bug reading array from kvstore
[Cause]             N/A
[Solution]          don't use json object, set json object to null
[Verification]      Build, install

Change-Id: I6760075039e0fbae173e7329fbd14721f2710664

src/config/from-kvjson-visitor.hpp

index e01774e..c355fc2 100644 (file)
@@ -151,10 +151,13 @@ private:
         std::string k = key(mKeyPrefix, name);
         int length = getArraySize(k, object);
         if (length < 0) {
-            throw ConfigException("Missing json field " + key(mKeyPrefix, name));
+            throw ConfigException("Missing array length " + k);
         }
         value.resize(static_cast<size_t>(length));
         FromKVJsonVisitor visitor(*this, name, false);
+        if (mStorePtr->exists(k)) {
+            visitor.mObject = nullptr;
+        }
         for (int i = 0; i < length; ++i) {
             visitor.getValue(i, value[i]);
         }
@@ -197,6 +200,9 @@ private:
         int length = getArraySize(k, mObject);
         value.resize(static_cast<size_t>(length));
         FromKVJsonVisitor visitor(*this, i, false);
+        if (mStorePtr->exists(k)) {
+            visitor.mObject = nullptr;
+        }
         for (int i = 0; i < length; ++i) {
             visitor.getValue(i, value[i]);
         }