aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorZufu Liu <unknown>2023-10-15 08:46:43 +1100
committerZufu Liu <unknown>2023-10-15 08:46:43 +1100
commit6658e397e2d0447bef4c5dd1db1c38d5d7917ac9 (patch)
treede11bc1a7c36a52fe8ae0be87408badcee161d81 /src
parent0a00f1b52c9f05800192db71ccc28dfaed58729b (diff)
downloadscintilla-mirror-6658e397e2d0447bef4c5dd1db1c38d5d7917ac9.tar.gz
Bug [#2405]. Fix incorrect substitution when searching for a regular expression
backwards.
Diffstat (limited to 'src')
-rw-r--r--src/Document.cxx8
1 files changed, 8 insertions, 0 deletions
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;
}