On Tue, 15 Jan 2002, Allan Rae wrote:
>
> Take a look at Bugzilla #174. I have attached an insure++ report with
> details of dangling pointers and where they were released.
I have a fix for #174 but sadly it seems that another crash can result
elsewhere. It looks like something at a higher level may make a
similar mistake to the below. I'll investigate that now -- may as
well use insure again and see what it says about my fix.
Index: text.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/text.C,v
retrieving revision 1.224
diff -u -p -u -p -r1.224 text.C
--- text.C 2002/01/15 11:44:16 1.224
+++ text.C 2002/01/16 09:11:45
@@ -485,9 +485,12 @@ void LyXText::drawInset(DrawRowParams &
Row * prev = p.row->previous();
if (prev && prev->par() == p.row->par()) {
breakAgainOneRow(p.bv, prev);
- }
+ // breakAgainOneRow() may have removed p.row
+ need_break_row = prev->next();
+ } else {
+ need_break_row = p.row;
+ }
setCursor(p.bv, cursor.par(), cursor.pos());
- need_break_row = p.row;
}
}
Allan. (ARRae)