🐛 hopefully fixing the crashes on Linux (#365)
This commit is contained in:
parent
f620d74919
commit
6cc2d58d69
2 changed files with 12 additions and 22 deletions
17
src/json.hpp
17
src/json.hpp
|
@ -8733,10 +8733,7 @@ basic_json_parser_66:
|
||||||
if (m_start != reinterpret_cast<const lexer_char_t*>(m_line_buffer.data()))
|
if (m_start != reinterpret_cast<const lexer_char_t*>(m_line_buffer.data()))
|
||||||
{
|
{
|
||||||
// copy unprocessed characters to line buffer
|
// copy unprocessed characters to line buffer
|
||||||
m_line_buffer.clear();
|
m_line_buffer.assign(m_start, m_limit);
|
||||||
m_line_buffer.append(
|
|
||||||
reinterpret_cast<const typename string_t::value_type*>(m_start),
|
|
||||||
static_cast<size_t>(m_limit - m_start));
|
|
||||||
m_cursor = m_limit;
|
m_cursor = m_limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8842,18 +8839,16 @@ basic_json_parser_66:
|
||||||
// iterate the result between the quotes
|
// iterate the result between the quotes
|
||||||
for (const lexer_char_t* i = m_start + 1; i < m_cursor - 1; ++i)
|
for (const lexer_char_t* i = m_start + 1; i < m_cursor - 1; ++i)
|
||||||
{
|
{
|
||||||
// number of non-escaped characters
|
// find next escape character
|
||||||
const size_t n = static_cast<size_t>(std::find(i, m_cursor - 1, '\\') - i);
|
auto e = std::find(i, m_cursor - 1, '\\');
|
||||||
|
if (e != i)
|
||||||
if (n != 0)
|
|
||||||
{
|
{
|
||||||
result.append(reinterpret_cast<const typename string_t::value_type*>(i), n);
|
result.append(i, e);
|
||||||
i += n - 1; // -1 because will ++i
|
i = e - 1; // -1 because of ++i
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// processing escaped character
|
// processing escaped character
|
||||||
|
|
||||||
// read next character
|
// read next character
|
||||||
++i;
|
++i;
|
||||||
|
|
||||||
|
|
|
@ -7882,10 +7882,7 @@ class basic_json
|
||||||
if (m_start != reinterpret_cast<const lexer_char_t*>(m_line_buffer.data()))
|
if (m_start != reinterpret_cast<const lexer_char_t*>(m_line_buffer.data()))
|
||||||
{
|
{
|
||||||
// copy unprocessed characters to line buffer
|
// copy unprocessed characters to line buffer
|
||||||
m_line_buffer.clear();
|
m_line_buffer.assign(m_start, m_limit);
|
||||||
m_line_buffer.append(
|
|
||||||
reinterpret_cast<const typename string_t::value_type*>(m_start),
|
|
||||||
static_cast<size_t>(m_limit - m_start));
|
|
||||||
m_cursor = m_limit;
|
m_cursor = m_limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7991,18 +7988,16 @@ class basic_json
|
||||||
// iterate the result between the quotes
|
// iterate the result between the quotes
|
||||||
for (const lexer_char_t* i = m_start + 1; i < m_cursor - 1; ++i)
|
for (const lexer_char_t* i = m_start + 1; i < m_cursor - 1; ++i)
|
||||||
{
|
{
|
||||||
// number of non-escaped characters
|
// find next escape character
|
||||||
const size_t n = static_cast<size_t>(std::find(i, m_cursor - 1, '\\') - i);
|
auto e = std::find(i, m_cursor - 1, '\\');
|
||||||
|
if (e != i)
|
||||||
if (n != 0)
|
|
||||||
{
|
{
|
||||||
result.append(reinterpret_cast<const typename string_t::value_type*>(i), n);
|
result.append(i, e);
|
||||||
i += n - 1; // -1 because will ++i
|
i = e - 1; // -1 because of ++i
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// processing escaped character
|
// processing escaped character
|
||||||
|
|
||||||
// read next character
|
// read next character
|
||||||
++i;
|
++i;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue