mirror of https://github.com/aria2/aria2
Fix off by 1 error in JsonParser::parseUpdate() return value
parent
2684db766d
commit
9620bb0a6d
|
@ -107,7 +107,7 @@ ssize_t JsonParser::parseUpdate(const char* data, size_t size)
|
||||||
} else if(currentState_ == JSON_ERROR) {
|
} else if(currentState_ == JSON_ERROR) {
|
||||||
return lastError_;
|
return lastError_;
|
||||||
}
|
}
|
||||||
for(i = 0; i < size; ++i) {
|
for(i = 0; i < size && currentState_ != JSON_FINISH; ++i) {
|
||||||
char c = data[i];
|
char c = data[i];
|
||||||
switch(currentState_) {
|
switch(currentState_) {
|
||||||
case JSON_ARRAY:
|
case JSON_ARRAY:
|
||||||
|
@ -499,9 +499,6 @@ ssize_t JsonParser::parseUpdate(const char* data, size_t size)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(currentState_ == JSON_FINISH) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
|
@ -220,7 +220,15 @@ void ValueBaseJsonParserTest::testParseUpdate()
|
||||||
const String* s = downcast<String>(list->get(0));
|
const String* s = downcast<String>(list->get(0));
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("foo$b¢€baz"), s->s());
|
CPPUNIT_ASSERT_EQUAL(std::string("foo$b¢€baz"), s->s());
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
// ignore garbage at the end of the input.
|
||||||
|
std::string src = "[]trail";
|
||||||
|
SharedHandle<ValueBase> r = parser.parseFinal(src.c_str(), src.size(),
|
||||||
|
error);
|
||||||
|
const List* list = downcast<List>(r);
|
||||||
|
CPPUNIT_ASSERT(list);
|
||||||
|
CPPUNIT_ASSERT_EQUAL((ssize_t)2, error);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
Loading…
Reference in New Issue