From 0092b523c7d3c1735b6854bcbdb4e65ec782f092 Mon Sep 17 00:00:00 2001 From: Georg Baum Date: Sat, 5 Jul 2014 11:44:13 +0200 Subject: [PATCH] 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. --- src/insets/InsetTabular.cpp | 24 ++++++++++++++++++++++-- src/insets/InsetTabular.h | 2 +- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp index 1a84c8e220..433fe197e7 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) +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(cs.inset->clone())); return *this; } diff --git a/src/insets/InsetTabular.h b/src/insets/InsetTabular.h index be1a67f51f..8941a831e4 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); ///