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

View File

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