commit 0092b523c7d3c1735b6854bcbdb4e65ec782f092
Author: Georg Baum <[email protected]>
Date: Sat Jul 5 11:44:13 2014 +0200
Fix Tabular::CellData::operator=()
Don't create an intermediate copy (found by Jean-Marc).
I doubt that this has anything to do with the mystery crash, but it works,
and
following the standard patterns is better anyway.
diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index 1a84c8e..433fe19 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -602,9 +602,29 @@ Tabular::CellData::CellData(CellData const & cs)
{
}
-Tabular::CellData & Tabular::CellData::operator=(CellData cs)
-{
- swap(cs);
+Tabular::CellData & Tabular::CellData::operator=(CellData const & cs)
+{
+ if (&cs == this)
+ return *this;
+ cellno = cs.cellno;
+ width = cs.width;
+ multicolumn = cs.multicolumn;
+ multirow = cs.multirow;
+ mroffset = cs.mroffset;
+ alignment = cs.alignment;
+ valignment = cs.valignment;
+ decimal_hoffset = cs.decimal_hoffset;
+ decimal_width = cs.decimal_width;
+ voffset = cs.voffset;
+ top_line = cs.top_line;
+ bottom_line = cs.bottom_line;
+ left_line = cs.left_line;
+ right_line = cs.right_line;
+ usebox = cs.usebox;
+ rotate = cs.rotate;
+ align_special = cs.align_special;
+ p_width = cs.p_width;
+ inset.reset(static_cast<InsetTableCell *>(cs.inset->clone()));
return *this;
}
diff --git a/src/insets/InsetTabular.h b/src/insets/InsetTabular.h
index be1a67f..8941a83 100644
--- a/src/insets/InsetTabular.h
+++ b/src/insets/InsetTabular.h
@@ -610,7 +610,7 @@ public:
///
CellData(CellData const &);
///
- CellData & operator=(CellData);
+ CellData & operator=(CellData const &);
///
void swap(CellData & rhs);
///