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_;
};