1
0
mirror of https://github.com/nlohmann/json.git synced 2025-07-13 20:21:48 +03:00

fixed a bug for short input files (#344)

For input files with less than 5 bytes, the parser had a bug so that
refilling the input buffer led to erasing it.
This commit is contained in:
Niels
2016-10-29 13:32:36 +02:00
parent 2fdba9de19
commit 42ea4fb751
3 changed files with 17 additions and 9 deletions

View File

@ -7895,11 +7895,15 @@ class basic_json
// no stream is used or end of file is reached
if (m_stream == nullptr or m_stream->eof())
{
// copy unprocessed characters to line buffer
m_line_buffer.clear();
for (m_cursor = m_start; m_cursor != m_limit; ++m_cursor)
// skip this part if we are already using the line buffer
if (m_start != reinterpret_cast<const lexer_char_t*>(m_line_buffer.data()))
{
m_line_buffer.append(1, static_cast<const char>(*m_cursor));
// copy unprocessed characters to line buffer
m_line_buffer.clear();
for (m_cursor = m_start; m_cursor != m_limit; ++m_cursor)
{
m_line_buffer.append(1, static_cast<const char>(*m_cursor));
}
}
// append 5 characters (size of longest keyword "false") to