]> git.lyx.org Git - features.git/commitdiff
FindAdv: Avoid crash finding char at end of inset
authorKornel Benko <kornel@lyx.org>
Mon, 26 Nov 2018 11:37:18 +0000 (12:37 +0100)
committerKornel Benko <kornel@lyx.org>
Mon, 26 Nov 2018 11:37:18 +0000 (12:37 +0100)
Testcase without this patch:
1.) open de/Additional.lyx
2.) goto 6.1 Astronomy & Astrophysics
3.) open the index
4.) find advaced
a.) not ignoring format
b.) regex = .+
c.) language of regex: English
4.) search next
The seach finds the next break (which is outside of the index)
The following try to display the selection leads to crash

src/lyxfind.cpp

index 0bd647fff4a28f3388868af57afc56c86584cd85..35be0d0143aed2e1a199ed1a4dca8676c60d7c3d 100644 (file)
@@ -2656,9 +2656,9 @@ int findAdvFinalize(DocIterator & cur, MatchStringAdv const & match)
 
        // Compute the match length
         int len = 1;
+       if (cur.pos() + len > cur.lastpos())
+         return 0;
        if (match.opt.matchword) {
-          if (cur.pos() + len > cur.lastpos())
-            return 0;
           LYXERR(Debug::FIND, "verifying unmatch with len = " << len);
           while (cur.pos() + len <= cur.lastpos() && match(cur, len) <= 0) {
             ++len;