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)

Reply via email to