- len = findAdvFinalize(cur, match);
- if (cur != cur_begin) {
- Inset & inset = cur.inset();
- int old_len;
- DocIterator old_cur;
- DocIterator dit2;
- do {
- old_cur = cur;
- old_len = len;
- cur.backwardPos();
- LYXERR(Debug::FIND, "findMostBackwards(): old_cur="
- << old_cur << ", old_len=" << len << ", cur=" << cur);
- dit2 = cur;
- } while (cur != cur_begin && &cur.inset() == &inset && match(cur)
- && (len = findAdvFinalize(dit2, match)) > old_len);
- cur = old_cur;
- len = old_len;
+ DocIterator tmp_cur = cur;
+ len = findAdvFinalize(tmp_cur, match);
+ Inset & inset = cur.inset();
+ for (; cur != cur_begin; cur.backwardPos()) {
+ LYXERR(Debug::FIND, "findMostBackwards(): cur=" << cur);
+ DocIterator new_cur = cur;
+ new_cur.backwardPos();
+ if (new_cur == cur || &new_cur.inset() != &inset || !match(new_cur))
+ break;
+ int new_len = findAdvFinalize(new_cur, match);
+ if (new_len == len)
+ break;
+ len = new_len;