fixed a bug that was found in the discussion of #274

This commit is contained in:
Niels 2016-07-22 21:40:58 +02:00
parent 51a3829680
commit ddfe86cc49
3 changed files with 10 additions and 2 deletions

View file

@ -7283,7 +7283,7 @@ class basic_json
explicit lexer(const string_t& s) noexcept explicit lexer(const string_t& s) noexcept
: m_stream(nullptr), m_buffer(s) : m_stream(nullptr), m_buffer(s)
{ {
m_content = reinterpret_cast<const lexer_char_t*>(s.c_str()); m_content = reinterpret_cast<const lexer_char_t*>(m_buffer.c_str());
assert(m_content != nullptr); assert(m_content != nullptr);
m_start = m_cursor = m_content; m_start = m_cursor = m_content;
m_limit = m_content + s.size(); m_limit = m_content + s.size();

View file

@ -7283,7 +7283,7 @@ class basic_json
explicit lexer(const string_t& s) noexcept explicit lexer(const string_t& s) noexcept
: m_stream(nullptr), m_buffer(s) : m_stream(nullptr), m_buffer(s)
{ {
m_content = reinterpret_cast<const lexer_char_t*>(s.c_str()); m_content = reinterpret_cast<const lexer_char_t*>(m_buffer.c_str());
assert(m_content != nullptr); assert(m_content != nullptr);
m_start = m_cursor = m_content; m_start = m_cursor = m_content;
m_limit = m_content + s.size(); m_limit = m_content + s.size();

View file

@ -10359,6 +10359,14 @@ TEST_CASE("parser class")
CHECK(j_empty_array == json()); CHECK(j_empty_array == json());
} }
} }
SECTION("copy constructor")
{
json::string_t* s = new json::string_t("[1,2,3,4]");
json::parser p(*s);
delete s;
CHECK(p.parse() == json({1, 2, 3, 4}));
}
} }
TEST_CASE("README", "[hide]") TEST_CASE("README", "[hide]")