From: Richard Kimberly Heck Date: Sat, 6 May 2023 19:29:16 +0000 (-0400) Subject: If the ending delimiter is at the end of the file, then the test X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=8fac7d70355fefb8c777aeeeb971660b020adf4c;p=features.git 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. --- 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;