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.
This commit is contained in:
Georg Baum 2014-07-05 11:44:13 +02:00
parent 79e79ed548
commit 0092b523c7
2 changed files with 23 additions and 3 deletions

View File

@ -602,9 +602,29 @@ Tabular::CellData::CellData(CellData const & cs)
{ {
} }
Tabular::CellData & Tabular::CellData::operator=(CellData cs) Tabular::CellData & Tabular::CellData::operator=(CellData const & cs)
{ {
swap(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; return *this;
} }

View File

@ -610,7 +610,7 @@ public:
/// ///
CellData(CellData const &); CellData(CellData const &);
/// ///
CellData & operator=(CellData); CellData & operator=(CellData const &);
/// ///
void swap(CellData & rhs); void swap(CellData & rhs);
/// ///