diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index e6b8a5ab..7174c380 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -3186,7 +3186,7 @@ class basic_json inline token_type scan() noexcept { // pointer for backtracking information - const lexer_char_t* m_marker = nullptr; + m_marker = nullptr; // remember the begin of the token m_start = m_cursor; @@ -3258,6 +3258,7 @@ class basic_json if (not m_stream or not *m_stream) return; ssize_t offset_start = m_start - m_content; + ssize_t offset_marker = m_marker - m_start; ssize_t offset_cursor = m_cursor - m_start; ssize_t offset_limit = m_limit - m_start; @@ -3268,6 +3269,7 @@ class basic_json m_content = reinterpret_cast(m_buffer.c_str()); //reinterpret_cast(endptr) m_start = m_content + offset_start; + m_marker = m_start + offset_marker; m_cursor = m_start + offset_cursor; m_limit = m_start + offset_limit; } @@ -3442,6 +3444,8 @@ class basic_json const lexer_char_t* m_content = nullptr; /// pointer to the beginning of the current symbol const lexer_char_t* m_start = nullptr; + /// pointer for backtracking information + const lexer_char_t* m_marker = nullptr; /// pointer to the current symbol const lexer_char_t* m_cursor = nullptr; /// pointer to the end of the buffer