From 7c1aeb387afa9a1b7d01ee9ea3a2950a3cc5ac8b Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Thu, 23 May 2019 10:26:08 +0200 Subject: [PATCH] Fixup da2696cc: do not clear useful information from row Ensure before calling breakRow that the row is empty. Remove Row::clear(), which has unnatural semantics. Fixes bug #11396. --- src/Row.h | 2 -- src/TextMetrics.cpp | 5 +++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Row.h b/src/Row.h index e4a8e689b6..d210174ef9 100644 --- a/src/Row.h +++ b/src/Row.h @@ -261,8 +261,6 @@ public: Element const & back() const { return elements_.back(); } /// remove last element void pop_back(); - /// remove all row elements - void clear() { *this = Row(); } /** * if row width is too large, remove all elements after last * separator and update endpos if necessary. If all that diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp index 6f195a6022..fc610ad854 100644 --- a/src/TextMetrics.cpp +++ b/src/TextMetrics.cpp @@ -524,10 +524,11 @@ bool TextMetrics::redoParagraph(pit_type const pit, bool const align_rows) do { if (row_index == pm.rows().size()) pm.rows().push_back(Row()); + else + pm.rows()[row_index] = Row(); Row & row = pm.rows()[row_index]; row.pit(pit); row.pos(first); - row.pit(pit); need_new_row = breakRow(row, right_margin); setRowHeight(row); row.changed(true); @@ -881,6 +882,7 @@ private: */ bool TextMetrics::breakRow(Row & row, int const right_margin) const { + LATTEST(row.empty()); Paragraph const & par = text_->getPar(row.pit()); pos_type const end = par.size(); pos_type const pos = row.pos(); @@ -888,7 +890,6 @@ bool TextMetrics::breakRow(Row & row, int const right_margin) const bool const is_rtl = text_->isRTL(row.pit()); bool need_new_row = false; - row.clear(); row.left_margin = leftMargin(row.pit(), pos); row.right_margin = right_margin; if (is_rtl) -- 2.39.5