From 6658e397e2d0447bef4c5dd1db1c38d5d7917ac9 Mon Sep 17 00:00:00 2001 From: Zufu Liu Date: Sun, 15 Oct 2023 08:46:43 +1100 Subject: Bug [#2405]. Fix incorrect substitution when searching for a regular expression backwards. --- src/Document.cxx | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/Document.cxx b/src/Document.cxx index 0365b24db..a45479e4b 100644 --- a/src/Document.cxx +++ b/src/Document.cxx @@ -3294,7 +3294,11 @@ Sci::Position BuiltinRegex::FindText(Document *doc, Sci::Position minPos, Sci::P if ((resr.increment == -1) && !searchforLineStart) { // Check for the last match on this line. int repetitions = 1000; // Break out of infinite loop + RESearch::MatchPositions bopat{}; + RESearch::MatchPositions eopat{}; while (success && (search.eopat[0] <= endOfLine) && (repetitions--)) { + bopat = search.bopat; + eopat = search.eopat; success = search.Execute(di, pos+1, endOfLine); if (success) { if (search.eopat[0] <= minPos) { @@ -3305,6 +3309,10 @@ Sci::Position BuiltinRegex::FindText(Document *doc, Sci::Position minPos, Sci::P } } } + if (!success) { + search.bopat = bopat; + search.eopat = eopat; + } } break; } -- cgit v1.2.3