]> git.lyx.org Git - features.git/commitdiff
If the ending delimiter is at the end of the file, then the test
authorRichard Kimberly Heck <rikiheck@lyx.org>
Sat, 6 May 2023 19:29:16 +0000 (15:29 -0400)
committerRichard Kimberly Heck <rikiheck@lyx.org>
Sat, 6 May 2023 22:59:40 +0000 (18:59 -0400)
    pimpl_->is
will return false no matter what. So we need a different way to
check if the delimiter was found.

src/Lexer.cpp

index c6402aec6f39f69e966b6afe17710d44aebeb5e8..ab052f5b77be5db7b6b8ab31300506b613d66cd7 100644 (file)
@@ -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;