Jürgen Spitzmüller wrote:
Abdelrazak Younes wrote:
I cannot reproduce the crash under windows but this looks familiar to an
old crash you had with the Toc if you remember.

I rather think it's a remainder of bug 3258. Note that in the backtrace, line 3497 in InsetTabular::doDispatch is reached,

        if (!is_deleted_)
                InsetTabularMailer(*this).updateDialog(&cur.bv()); // <-- this 
one

which means that is_deleted_ is false. AFAIU your fix in revision 17568, is_deleted_ should be true in this case.

Here is a radical solution. I should have thought about this earlier!
The dialog will be updated in any case by the LyXFunc::dispatch() method so the updating done in InsetTabular::dispatch() is superfluous.

I think this should go in before 1.5.0.

Abdel.
Index: insets/InsetTabular.cpp
===================================================================
--- insets/InsetTabular.cpp     (revision 19102)
+++ insets/InsetTabular.cpp     (working copy)
@@ -2877,13 +2877,13 @@
 InsetTabular::InsetTabular(Buffer const & buf, row_type rows,
                           col_type columns)
        : tabular(buf.params(), max(rows, row_type(1)),
-         max(columns, col_type(1))), buffer_(&buf), scx_(0), is_deleted_(false)
+         max(columns, col_type(1))), buffer_(&buf), scx_(0)
 {}
 
 
 InsetTabular::InsetTabular(InsetTabular const & tab)
        : Inset(tab), tabular(tab.tabular),
-               buffer_(tab.buffer_), scx_(0), is_deleted_(false)
+               buffer_(tab.buffer_), scx_(0)
 {}
 
 
@@ -3491,11 +3491,6 @@
                cell(cur.idx())->dispatch(cur, cmd);
                break;
        }
-
-       // FIXME: this accesses the position cache before it is initialized
-       //resetPos(cur);
-       if (!is_deleted_)
-               InsetTabularMailer(*this).updateDialog(&cur.bv());
 }
 
 
Index: insets/InsetTabular.h
===================================================================
--- insets/InsetTabular.h       (revision 19100)
+++ insets/InsetTabular.h       (working copy)
@@ -824,9 +824,6 @@
        mutable idx_type first_visible_cell;
        ///
        mutable int scx_;
-       /// Ugly boolean used when this inset is dissolved and
-       /// InsetTabularMailer should not be used.
-       bool is_deleted_;
 };
 
 

Reply via email to