]> git.lyx.org Git - features.git/commitdiff
fix a crash when the inset containing the new word at cursor is deleted
authorStephan Witt <switt@lyx.org>
Tue, 8 Feb 2011 09:42:00 +0000 (09:42 +0000)
committerStephan Witt <switt@lyx.org>
Tue, 8 Feb 2011 09:42:00 +0000 (09:42 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37563 a592a061-630c-0410-9148-cb99ea01b6c8

src/Cursor.cpp
src/DocIterator.cpp

index 59d2dd78c9db2d44fca1820d30ea7b6ff20646f4..64e2273d8fb1bc4f171246d6fb78ec1ba76d702b 100644 (file)
@@ -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);
+                       }
                }
        }
 }
index 0555a9f75f1db9dc2b467c22ee80f54415e4becf..310b85131ba8e1e3fe16eeaf69e58713d62cfc47 100644 (file)
@@ -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;
 }