mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-03 08:28:25 +00:00
Fix bug #8884: Crash when "navigate to next change"
The two fixes here a obviously right, although it is not clear why they are sufficient to fix the bug. Anyway I cannot reproduce any crash with it. * the first part just conditions a whole if/else to change_next_pos.changed(). Originally, only the if branch was concerned. * the second part is to avoid calling CursorSlice::backwardPos() when position is 0. Doing this leads to an assertion.
This commit is contained in:
parent
5c4acd6bc0
commit
c98ce56a03
@ -419,21 +419,24 @@ bool findChange(BufferView * bv, bool next)
|
||||
// of this function). This will avoid changes to be selected half.
|
||||
bool search_both_sides = false;
|
||||
Cursor tmpcur = cur;
|
||||
// Leave math first
|
||||
// Find enclosing text cursor
|
||||
while (tmpcur.inMathed())
|
||||
tmpcur.pop_back();
|
||||
Change change_next_pos
|
||||
= tmpcur.paragraph().lookupChange(tmpcur.pos());
|
||||
if (change_next_pos.changed() && cur.inMathed()) {
|
||||
cur = tmpcur;
|
||||
search_both_sides = true;
|
||||
} else if (tmpcur.pos() > 0 && tmpcur.inTexted()) {
|
||||
Change change_prev_pos
|
||||
= tmpcur.paragraph().lookupChange(tmpcur.pos() - 1);
|
||||
if (change_next_pos.isSimilarTo(change_prev_pos))
|
||||
if (change_next_pos.changed()) {
|
||||
if (cur.inMathed()) {
|
||||
cur = tmpcur;
|
||||
search_both_sides = true;
|
||||
} else if (tmpcur.pos() > 0 && tmpcur.inTexted()) {
|
||||
Change change_prev_pos
|
||||
= tmpcur.paragraph().lookupChange(tmpcur.pos() - 1);
|
||||
if (change_next_pos.isSimilarTo(change_prev_pos))
|
||||
search_both_sides = true;
|
||||
}
|
||||
}
|
||||
|
||||
// find the next change
|
||||
if (!findChange(cur, next))
|
||||
return false;
|
||||
|
||||
@ -441,7 +444,7 @@ bool findChange(BufferView * bv, bool next)
|
||||
|
||||
CursorSlice & tip = cur.top();
|
||||
|
||||
if (!next)
|
||||
if (!next && tip.pos() > 0)
|
||||
// take a step into the change
|
||||
tip.backwardPos();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user