From d65f56bf0318c0789fae7c5855b797d4adc9c93e Mon Sep 17 00:00:00 2001 From: Riyyi Date: Fri, 1 Jul 2022 11:26:27 +0200 Subject: [PATCH] Util: Break Lexer strings on quote and new lines --- src/util/json/lexer.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/util/json/lexer.cpp b/src/util/json/lexer.cpp index 6efdcfc..9fb7089 100644 --- a/src/util/json/lexer.cpp +++ b/src/util/json/lexer.cpp @@ -180,6 +180,9 @@ bool Lexer::getString() size_t column = m_column; std::string symbol = ""; + // Break on "\r\n + std::string breakOnGrammar = std::string("\"") + '\r' + '\n'; + bool escape = false; char character = consume(); for (;;) { @@ -192,7 +195,7 @@ bool Lexer::getString() continue; } - if (!escape && character == '"') { + if (!escape && breakOnGrammar.find(character) != std::string::npos) { break; } @@ -219,7 +222,7 @@ bool Lexer::getNumberOrLiteral(Token::Type type) { size_t column = m_column; std::string symbol = ""; - std::string breakOnGrammar = std::string() + "{}[]:,\" " + '\t' + '\r' + '\n'; + std::string breakOnGrammar = std::string("{}[]:,\" ") + '\t' + '\r' + '\n'; for (char character;;) { character = peek();