Merge branch 'develop' into issue550
This commit is contained in:
commit
2ba554e442
3 changed files with 30 additions and 7 deletions
12
src/json.hpp
12
src/json.hpp
|
@ -6381,7 +6381,7 @@ class basic_json
|
||||||
{
|
{
|
||||||
case value_t::array:
|
case value_t::array:
|
||||||
{
|
{
|
||||||
return *lhs.m_value.array < *rhs.m_value.array;
|
return (*lhs.m_value.array) < (*rhs.m_value.array);
|
||||||
}
|
}
|
||||||
case value_t::object:
|
case value_t::object:
|
||||||
{
|
{
|
||||||
|
@ -8799,7 +8799,7 @@ class basic_json
|
||||||
// store number of bytes in the buffer
|
// store number of bytes in the buffer
|
||||||
fill_size = static_cast<size_t>(is.gcount());
|
fill_size = static_cast<size_t>(is.gcount());
|
||||||
|
|
||||||
// skip byte-order mark
|
// skip byte order mark
|
||||||
if (fill_size >= 3 and buffer[0] == '\xEF' and buffer[1] == '\xBB' and buffer[2] == '\xBF')
|
if (fill_size >= 3 and buffer[0] == '\xEF' and buffer[1] == '\xBB' and buffer[2] == '\xBF')
|
||||||
{
|
{
|
||||||
buffer_pos += 3;
|
buffer_pos += 3;
|
||||||
|
@ -8896,7 +8896,13 @@ class basic_json
|
||||||
public:
|
public:
|
||||||
input_buffer_adapter(const char* b, size_t l)
|
input_buffer_adapter(const char* b, size_t l)
|
||||||
: input_adapter(), cursor(b), limit(b + l), start(b)
|
: input_adapter(), cursor(b), limit(b + l), start(b)
|
||||||
{}
|
{
|
||||||
|
// skip byte order mark
|
||||||
|
if (l >= 3 and b[0] == '\xEF' and b[1] == '\xBB' and b[2] == '\xBF')
|
||||||
|
{
|
||||||
|
cursor += 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// delete because of pointer members
|
// delete because of pointer members
|
||||||
input_buffer_adapter(const input_buffer_adapter&) = delete;
|
input_buffer_adapter(const input_buffer_adapter&) = delete;
|
||||||
|
|
|
@ -711,6 +711,7 @@ TEST_CASE("regression tests")
|
||||||
"[json.exception.parse_error.101] parse error at 1: syntax error - unexpected end of input");
|
"[json.exception.parse_error.101] parse error at 1: syntax error - unexpected end of input");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
SECTION("second example from #529")
|
SECTION("second example from #529")
|
||||||
{
|
{
|
||||||
std::string str = "{\n\"one\" : 1,\n\"two\" : 2\n}\n{\n\"three\" : 3\n}";
|
std::string str = "{\n\"one\" : 1,\n\"two\" : 2\n}\n{\n\"three\" : 3\n}";
|
||||||
|
@ -748,6 +749,7 @@ TEST_CASE("regression tests")
|
||||||
|
|
||||||
std::remove("test.json");
|
std::remove("test.json");
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("issue #389 - Integer-overflow (OSS-Fuzz issue 267)")
|
SECTION("issue #389 - Integer-overflow (OSS-Fuzz issue 267)")
|
||||||
|
@ -1167,4 +1169,10 @@ TEST_CASE("regression tests")
|
||||||
std::vector<uint8_t> vec = {'"', '\\', '"', 'X', '"', '"'};
|
std::vector<uint8_t> vec = {'"', '\\', '"', 'X', '"', '"'};
|
||||||
CHECK_THROWS_AS(json::parse(vec), json::parse_error);
|
CHECK_THROWS_AS(json::parse(vec), json::parse_error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SECTION("issue #602 - BOM not skipped when using json:parse(iterator)")
|
||||||
|
{
|
||||||
|
std::string i = "\xef\xbb\xbf{\n \"foo\": true\n}";
|
||||||
|
CHECK_NOTHROW(json::parse(i.begin(), i.end()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1011,6 +1011,8 @@ TEST_CASE("Unicode", "[hide]")
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTION("ignore byte-order-mark")
|
SECTION("ignore byte-order-mark")
|
||||||
|
{
|
||||||
|
SECTION("in a stream")
|
||||||
{
|
{
|
||||||
// read a file with a UTF-8 BOM
|
// read a file with a UTF-8 BOM
|
||||||
std::ifstream f("test/data/json_nlohmann_tests/bom.json");
|
std::ifstream f("test/data/json_nlohmann_tests/bom.json");
|
||||||
|
@ -1018,6 +1020,13 @@ TEST_CASE("Unicode", "[hide]")
|
||||||
CHECK_NOTHROW(f >> j);
|
CHECK_NOTHROW(f >> j);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SECTION("with an iterator")
|
||||||
|
{
|
||||||
|
std::string i = "\xef\xbb\xbf{\n \"foo\": true\n}";
|
||||||
|
CHECK_NOTHROW(json::parse(i.begin(), i.end()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SECTION("error for incomplete/wrong BOM")
|
SECTION("error for incomplete/wrong BOM")
|
||||||
{
|
{
|
||||||
CHECK_THROWS_AS(json::parse("\xef\xbb"), json::parse_error);
|
CHECK_THROWS_AS(json::parse("\xef\xbb"), json::parse_error);
|
||||||
|
|
Loading…
Reference in a new issue