>>>>> "Kayvan" == Kayvan A Sylvan <[EMAIL PROTECTED]> writes:
>> I think that I found a way to recreate this bug (or maybe it a
>> different bug) Open the attached file, put the cursor before the
>> letter X, and then hold backspace, and LyX will crash (it doesn't
>> happens every time, but often enough)
Kayvan> Yup. I managed to recreate this as well.
Kayvan> Same basic backtrace:
To add another bit of information, here is what purify says. It seems
that the problem is in the mechanism which deletes empty paragraph.
Lars, maybe this has to do with your double-space patch?
JMarc
FMR: Free memory read
This is occurring while in:
LyXText::RemoveParagraph(Row*)const [text2.C:304]
LyXText::Backspace() [text.C:3313]
LyXFunc::Dispatch(int,const char*) [lyxfunc.C:1791]
LyXFunc::processKeyEvent(_XEvent*) [lyxfunc.C:286]
LyXView::KeyPressMask_raw_callback(forms_*,void*) [LyXView.C:358]
C_LyXView_KeyPressMask_raw_callback [LyXView.C:390]
Reading 4 bytes from 0x5ece98 in the heap.
Address 0x5ece98 is at the beginning of a freed block of 28 bytes.
This block was allocated from:
malloc [rtlib.o]
__bUiLtIn_nEw [libgcc.a]
__builtin_new [rtlib.o]
LyXText::InsertRow(Row*,LyXParagraph*,int)const [text2.C:243]
LyXText::InsertParagraph(LyXParagraph*,Row*)const [text2.C:319]
LyXText::LyXText(BufferView*,int,Buffer*) [text2.C:63]
There have been 18 frees since this block was freed from:
free [rtlib.o]
__bUiLtIn_dElEtE [libgcc.a]
__builtin_delete [rtlib.o]
LyXText::RemoveRow(Row*)const [text2.C:296]
height -= row->height; // the text becomes smaller
=> delete row;
--number_of_rows; // one row less
}
LyXText::RedoParagraphs(const LyXCursor&,const LyXParagraph*)const
[text2.C:871]
tmprow2 = tmprow; /* this is because tmprow->previous
can be 0 */
tmprow = tmprow->previous;
=> RemoveRow(tmprow2);
tmppar = first_phys_par;
LyXText::DeleteEmptyParagraphMechanism(const LyXCursor&)const
[text2.C:3386]
}
if (!deleted) {
if (old_cursor.par->ClearParagraph()){
=> RedoParagraphs(old_cursor,
old_cursor.par->Next());
// correct cursor y
SetCursor(cursor.par, cursor.pos);
sel_cursor = cursor;