commit 0092b523c7d3c1735b6854bcbdb4e65ec782f092 Author: Georg Baum <b...@lyx.org> 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); ///