]> git.lyx.org Git - lyx.git/blobdiff - src/text2.C
bug 1987: Crash when switching to different document class
[lyx.git] / src / text2.C
index b4b3b2d61dc14c6465d11ce1e5d6b2290a28190f..e8001c7c7bd1dfdead898756c8b05a440739ffed 100644 (file)
@@ -494,13 +494,17 @@ void LyXText::cursorEnd(LCursor & cur)
        // the final space exept if I have a spanning inset or one string
        // is so long that we force a break.
        pos_type end = cur.textRow().endpos();
+       if (end == 0)
+               // empty text, end-1 is no valid position
+               return;
        bool boundary = false;
-       if (!cur.paragraph().isLineSeparator(end-1) &&
-           !cur.paragraph().isNewline(end-1))
-       {
-               boundary = true;
-       } else if (end != cur.lastpos())
-               --end;
+       if (end != cur.lastpos()) {
+               if (!cur.paragraph().isLineSeparator(end-1) 
+                       && !cur.paragraph().isNewline(end-1))
+                       boundary = true;
+               else
+                       --end;
+       }
        setCursor(cur, cur.pit(), end, true, boundary);
 }
 
@@ -1017,7 +1021,8 @@ bool LyXText::cursorRight(LCursor & cur)
        if (cur.pos() != cur.lastpos()) {
                bool updateNeeded = false;
                if (!checkAndActivateInset(cur, true)) {
-                       if (cur.textRow().endpos() == (cur.pos() + 1) &&
+                       if (cur.textRow().endpos() == cur.pos() + 1 &&
+                           cur.textRow().endpos() != cur.lastpos() &&
                            !cur.paragraph().isLineSeparator(cur.pos()) &&
                            !cur.paragraph().isNewline(cur.pos()))
                        {