From 8fac7d70355fefb8c777aeeeb971660b020adf4c Mon Sep 17 00:00:00 2001 From: Richard Kimberly Heck Date: Sat, 6 May 2023 15:29:16 -0400 Subject: [PATCH] If the ending delimiter is at the end of the file, then the test pimpl_->is will return false no matter what. So we need a different way to check if the delimiter was found. --- src/Lexer.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Lexer.cpp b/src/Lexer.cpp index c6402aec6f..ab052f5b77 100644 --- a/src/Lexer.cpp +++ b/src/Lexer.cpp @@ -690,6 +690,7 @@ docstring Lexer::getLongString(docstring const & endtoken) docstring str; docstring prefix; bool firstline = true; + bool foundend = false; while (pimpl_->is) { //< eatLine only reads from is, not from pushTok if (!eatLine()) @@ -701,8 +702,10 @@ docstring Lexer::getLongString(docstring const & endtoken) LYXERR(Debug::PARSER, "LongString: `" << tmpstr << '\''); // We do a case independent comparison, like searchKeyword does. - if (compare_no_case(token, endtoken) == 0) + if (compare_no_case(token, endtoken) == 0) { + foundend = true; break; + } if (firstline) { size_t i = tmpstr.find_first_not_of(from_ascii(" \t")); @@ -720,7 +723,7 @@ docstring Lexer::getLongString(docstring const & endtoken) str += tmpstr + '\n'; } - if (!pimpl_->is) + if (!foundend) printError("Long string not ended by `" + to_utf8(endtoken) + '\''); return str; -- 2.39.5