Skip to content

Commit d7a9f0c

Browse files
committed
Merge pull request #266 from cdunn2001/issue-252
Use unsigned for DuplicationPolicy Fix #252. This problem for **C++ Builder** was discovered and fixed by Victor Chen. See [this page via, in Chinese](http://www.cppfans.com/sdk/json/jsoncpp.asp).
2 parents f4ee48b + d3248d3 commit d7a9f0c

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

include/json/value.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ class JSON_API Value {
211211
void swap(CZString& other);
212212

213213
struct StringStorage {
214-
DuplicationPolicy policy_: 2;
214+
unsigned policy_: 2;
215215
unsigned length_: 30; // 1GB max
216216
};
217217

src/test_lib_json/main.cpp

+15
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,20 @@ JSONTEST_FIXTURE(ValueTest, arrays) {
257257
JSONTEST_ASSERT_EQUAL(Json::Value(17), got);
258258
JSONTEST_ASSERT_EQUAL(false, array1_.removeIndex(2, &got)); // gone now
259259
}
260+
JSONTEST_FIXTURE(ValueTest, arrayIssue252)
261+
{
262+
int count = 5;
263+
Json::Value root;
264+
Json::Value item;
265+
root["array"] = Json::Value::nullRef;
266+
for (int i = 0; i < count; i++)
267+
{
268+
item["a"] = i;
269+
item["b"] = i;
270+
root["array"][i] = item;
271+
}
272+
//JSONTEST_ASSERT_EQUAL(5, root["array"].size());
273+
}
260274

261275
JSONTEST_FIXTURE(ValueTest, null) {
262276
JSONTEST_ASSERT_EQUAL(Json::nullValue, null_.type());
@@ -2326,6 +2340,7 @@ int main(int argc, const char* argv[]) {
23262340
JSONTEST_REGISTER_FIXTURE(runner, ValueTest, memberCount);
23272341
JSONTEST_REGISTER_FIXTURE(runner, ValueTest, objects);
23282342
JSONTEST_REGISTER_FIXTURE(runner, ValueTest, arrays);
2343+
JSONTEST_REGISTER_FIXTURE(runner, ValueTest, arrayIssue252);
23292344
JSONTEST_REGISTER_FIXTURE(runner, ValueTest, null);
23302345
JSONTEST_REGISTER_FIXTURE(runner, ValueTest, strings);
23312346
JSONTEST_REGISTER_FIXTURE(runner, ValueTest, bools);

0 commit comments

Comments
 (0)