sw/source/filter/ww8/wrtw8nds.cxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
New commits: commit 07138b4f5cd5dc2585b9f63f68f3e2badd34d3c7 Author: Michael Stahl <mst...@redhat.com> Date: Wed Dec 13 13:06:49 2017 +0100 sw: fix crash exporting tdf93816-2.odt to WW8 The problem is that nLen = *aBreakIt - nAktPos - ofs; results in -12. It doesn't make sense to me that nEnd should still be the end of the paragraph in this case. Change-Id: I0c9df6a938035b3bc2c8857ef09206d8967c20f4 diff --git a/sw/source/filter/ww8/wrtw8nds.cxx b/sw/source/filter/ww8/wrtw8nds.cxx index 76120b876fa4..54466b48f5d0 100644 --- a/sw/source/filter/ww8/wrtw8nds.cxx +++ b/sw/source/filter/ww8/wrtw8nds.cxx @@ -2318,7 +2318,7 @@ void MSWordExportBase::OutputTextNode( SwTextNode& rNode ) const OUString& aStr( rNode.GetText() ); - sal_Int32 const nEnd = aStr.getLength(); + sal_Int32 const nEnd = bNeedParaSplit ? *aBreakIt : aStr.getLength(); bool bIncludeEndOfParaCRInRedlineProperties = false; sal_Int32 nOpenAttrWithRange = 0; @@ -2496,8 +2496,10 @@ void MSWordExportBase::OutputTextNode( SwTextNode& rNode ) nLen -= ofs; // if paragraph needs to be split, write only until split position + assert(!bNeedParaSplit || nAktPos <= *aBreakIt); if( bNeedParaSplit && nAktPos + ofs + nLen > *aBreakIt) nLen = *aBreakIt - nAktPos - ofs; + assert(0 <= nLen); OUString aSnippet( aAttrIter.GetSnippet( aStr, nAktPos + ofs, nLen ) ); if ( ( m_nTextTyp == TXT_EDN || m_nTextTyp == TXT_FTN ) && nAktPos == 0 && nLen > 0 ) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits