From: Krzysztof Dynowski Date: Thu, 22 Jan 2015 10:29:14 +0000 (+0100) Subject: fix loading array from kvstore if size diffs in json X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F49%2F34249%2F1;p=archive%2Fplatform%2Fcore%2Fsystem%2FlibConfig.git fix loading array from kvstore if size diffs in json [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 --- diff --git a/src/config/from-kvjson-visitor.hpp b/src/config/from-kvjson-visitor.hpp index e01774e..c355fc2 100644 --- a/src/config/from-kvjson-visitor.hpp +++ b/src/config/from-kvjson-visitor.hpp @@ -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(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(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]); }