Skip to content

Commit fcec773

Browse files
authored
Merge pull request Tencent#1567 from AtnNn/master
Allow pointer tokens to have non-null-terminated strings
2 parents 2648a73 + 123d7c8 commit fcec773

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

include/rapidjson/pointer.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,7 @@ class GenericPointer {
488488
v = &((*v)[t->index]);
489489
}
490490
else {
491-
typename ValueType::MemberIterator m = v->FindMember(GenericStringRef<Ch>(t->name, t->length));
491+
typename ValueType::MemberIterator m = v->FindMember(GenericValue<EncodingType>(GenericStringRef<Ch>(t->name, t->length)));
492492
if (m == v->MemberEnd()) {
493493
v->AddMember(ValueType(t->name, t->length, allocator).Move(), ValueType().Move(), allocator);
494494
v = &(--v->MemberEnd())->value; // Assumes AddMember() appends at the end
@@ -543,7 +543,7 @@ class GenericPointer {
543543
switch (v->GetType()) {
544544
case kObjectType:
545545
{
546-
typename ValueType::MemberIterator m = v->FindMember(GenericStringRef<Ch>(t->name, t->length));
546+
typename ValueType::MemberIterator m = v->FindMember(GenericValue<EncodingType>(GenericStringRef<Ch>(t->name, t->length)));
547547
if (m == v->MemberEnd())
548548
break;
549549
v = &m->value;
@@ -779,7 +779,7 @@ class GenericPointer {
779779
switch (v->GetType()) {
780780
case kObjectType:
781781
{
782-
typename ValueType::MemberIterator m = v->FindMember(GenericStringRef<Ch>(t->name, t->length));
782+
typename ValueType::MemberIterator m = v->FindMember(GenericValue<EncodingType>(GenericStringRef<Ch>(t->name, t->length)));
783783
if (m == v->MemberEnd())
784784
return false;
785785
v = &m->value;

test/unittest/pointertest.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,9 @@ TEST(Pointer, Get) {
674674
EXPECT_EQ(2u, unresolvedTokenIndex);
675675
EXPECT_TRUE(Pointer("/foo/0/a").Get(d, &unresolvedTokenIndex) == 0); // "/foo/0" is an string, cannot further query
676676
EXPECT_EQ(2u, unresolvedTokenIndex);
677+
678+
Pointer::Token tokens[] = { { "foo ...", 3, kPointerInvalidIndex } };
679+
EXPECT_EQ(&d["foo"], Pointer(tokens, 1).Get(d));
677680
}
678681

679682
TEST(Pointer, GetWithDefault) {

0 commit comments

Comments
 (0)