fix loading array from kvstore if size diffs in json
[archive/platform/core/system/libConfig.git] / 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]);
         }