From: Stephan Witt Date: Tue, 8 Feb 2011 09:42:00 +0000 (+0000) Subject: fix a crash when the inset containing the new word at cursor is deleted X-Git-Tag: 2.0.0~824 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=e1a685fcb1da65211e9eecd7ed3ac9daf7cd5f22;p=features.git fix a crash when the inset containing the new word at cursor is deleted git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37563 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/Cursor.cpp b/src/Cursor.cpp index 59d2dd78c9..64e2273d8f 100644 --- a/src/Cursor.cpp +++ b/src/Cursor.cpp @@ -552,17 +552,21 @@ void Cursor::checkNewWordPosition() if (!inTexted()) clearNewWordPosition(); else { - if (paragraph().id() != new_word_.paragraph().id()) + if (pit() != new_word_.pit()) clearNewWordPosition(); else { - FontSpan ow = new_word_.locateWord(WHOLE_WORD); FontSpan nw = locateWord(WHOLE_WORD); - if (nw.intersect(ow).empty()) + if (nw.size()) { + FontSpan ow = new_word_.locateWord(WHOLE_WORD); + if (nw.intersect(ow).empty()) + clearNewWordPosition(); + else + LYXERR(Debug::DEBUG, "new word: " + << " par: " << pit() + << " pos: " << nw.first << ".." << nw.last); + } else { clearNewWordPosition(); - else - LYXERR(Debug::DEBUG, "new word: " - << " par: " << pit() - << " pos: " << nw.first << ".." << nw.last); + } } } } diff --git a/src/DocIterator.cpp b/src/DocIterator.cpp index 0555a9f75f..310b85131b 100644 --- a/src/DocIterator.cpp +++ b/src/DocIterator.cpp @@ -196,8 +196,10 @@ FontSpan DocIterator::locateWord(word_location const loc) const { FontSpan f = FontSpan(); - f.first = pos(); - top().paragraph().locateWord(f.first, f.last, loc); + if (!top().text()->empty()) { + f.first = pos(); + top().paragraph().locateWord(f.first, f.last, loc); + } return f; }