>>>>> "Martin" == Martin Vermeer <[EMAIL PROTECTED]> writes:
Martin> Here's a better backtrace (and yes, it crashes just as well Martin> without the speedup patch!): The problem is that cursorDown uses editXY to set the cursor, and forgets to rest the anchor. Therefore the anchor is at a lower depth, and and an assert ensues. This is fixed by the attached patch, that I propose to apply (thoughts?). BUT... The thing still crash afterwards. Why, I hear you ask? Here is what the backtrace says: Assertion triggered in void <unnamed>::recordUndo(Undo::undo_kind, LCursor&, lyx::pit_type, lyx::pit_type, limited_stack<Undo>&) by failing check "first_pit <= cur.lastpit()" in file ../../lyx-devel/src/undo.C:117 [...] #5 0x0811404e in boost::assertion_failed ( expr=0x861a2c8 "first_pit <= cur.lastpit()", function=0x861a3c0 "void <unnamed>::recordUndo(Undo::undo_kind, LCursor&, lyx::pit_type, lyx::pit_type, limited_stack<Undo>&)", file=0x861a2ad "../../lyx-devel/src/undo.C", line=117) at ../../lyx-devel/src/boost.C:56 #6 0x082e31e3 in (anonymous namespace)::recordUndo (kind=Undo::ATOMIC, [EMAIL PROTECTED], first_pit=-1220488680, last_pit=0, [EMAIL PROTECTED]) at ../../lyx-devel/src/undo.C:117 #7 0x082e3c0d in recordUndo (kind=Undo::ATOMIC, [EMAIL PROTECTED], first=1, last=0) at ../../lyx-devel/src/undo.C:227 #8 0x082e3d87 in recordUndo ([EMAIL PROTECTED], kind=Undo::ATOMIC, from=1, to=0) at ../../lyx-devel/src/undo.C:264 #9 0x082ce274 in LyXText::recUndo (this=0x88bef48, first=1, last=0) at ../../lyx-devel/src/text2.C:1311 #10 0x082ce113 in LyXText::deleteEmptyParagraphMechanism (this=0x88bef48, [EMAIL PROTECTED], [EMAIL PROTECTED]) at dociterator.h:94 #11 0x082cd9af in LyXText::cursorDown (this=0x88bef48, [EMAIL PROTECTED]) at ../../lyx-devel/src/text2.C:1115 Basically, dEPM compares the tips of cursors without caring whether they are at same depth (insert apples and oranges comment here). Here undo is called between two cursors at different depth :( This is a real mess. JMarc