sw/source/core/text/frmform.cxx | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)
New commits: commit f06508e2cfa7e833862b7e9ff3b2f79181672275 Author: Caolán McNamara <caol...@redhat.com> Date: Mon Sep 28 13:28:13 2015 +0100 Resolves: tdf#93461 captions laid out behind images regression from... commit 8a08f68669f9acfe98dadcca4af6519164a17000 Author: Mike <mikekagan...@hotmail.com> Date: Mon Apr 27 01:27:05 2015 +1000 tdf#66141: SwTxtFrm::FormatQuick(bool) endless loop If a line happens to be invisible (e.g. in too thin cell of a table) then aLine.FormatLine(nStart) returns nStart, and aLine.Insert( new SwLineLayout() ) is executed until OOM. keep the zero advance loop detection attempt, but allow the first insertion and disallow subsequent inserts Change-Id: I16380588220149cfd0ed0f835f08d2849180fece diff --git a/sw/source/core/text/frmform.cxx b/sw/source/core/text/frmform.cxx index 35876fc..f85215d 100644 --- a/sw/source/core/text/frmform.cxx +++ b/sw/source/core/text/frmform.cxx @@ -1894,14 +1894,21 @@ bool SwTextFrm::FormatQuick( bool bForceQuickFormat ) sal_Int32 nStart = GetOfst(); const sal_Int32 nEnd = GetFollow() ? GetFollow()->GetOfst() : aInf.GetText().getLength(); + + bool bPreviousLayoutWasZeroWidth = false; do { - sal_Int32 nShift = aLine.FormatLine(nStart) - nStart; - nStart += nShift; - if ((nShift != 0) // Check for special case: line is invisible, - // like in too thin table cell: tdf#66141 + sal_Int32 nNewStart = aLine.FormatLine(nStart); + // Check for special case: line is invisible, + // like in too thin table cell: tdf#66141 + bool bThisLayoutIsZeroWidth = (nNewStart == nStart); + nStart = nNewStart; + bool bWillEndlessInsert = (bPreviousLayoutWasZeroWidth && bThisLayoutIsZeroWidth); + if ((!bWillEndlessInsert) // Check for special case: line is invisible, + // like in too thin table cell: tdf#66141 && (aInf.IsNewLine() || (!aInf.IsStop() && nStart < nEnd))) aLine.Insert( new SwLineLayout() ); + bPreviousLayoutWasZeroWidth = bThisLayoutIsZeroWidth; } while( aLine.Next() ); // Last exit: the heights need to match
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits