aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Document.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Document.cxx')
-rw-r--r--src/Document.cxx5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/Document.cxx b/src/Document.cxx
index 7b718f272..dde9c4b6b 100644
--- a/src/Document.cxx
+++ b/src/Document.cxx
@@ -2113,6 +2113,7 @@ long BuiltinRegex::FindText(Document *doc, int minPos, int maxPos, const char *s
int pos = -1;
int lenRet = 0;
char searchEnd = s[*length - 1];
+ char searchEndPrev = (*length > 1) ? s[*length - 2] : '\0';
int lineRangeBreak = lineRangeEnd + increment;
for (int line = lineRangeStart; line != lineRangeBreak; line += increment) {
int startOfLine = doc->LineStart(line);
@@ -2124,7 +2125,7 @@ long BuiltinRegex::FindText(Document *doc, int minPos, int maxPos, const char *s
startOfLine = startPos;
}
if (line == lineRangeEnd) {
- if ((endPos != endOfLine) && (searchEnd == '$'))
+ if ((endPos != endOfLine) && (searchEnd == '$') && (searchEndPrev != '\\'))
continue; // Can't match end of line if end position before end of line
endOfLine = endPos;
}
@@ -2135,7 +2136,7 @@ long BuiltinRegex::FindText(Document *doc, int minPos, int maxPos, const char *s
startOfLine = endPos;
}
if (line == lineRangeStart) {
- if ((startPos != endOfLine) && (searchEnd == '$'))
+ if ((startPos != endOfLine) && (searchEnd == '$') && (searchEndPrev != '\\'))
continue; // Can't match end of line if start position before end of line
endOfLine = startPos;
}