editeng/source/editeng/impedit2.cxx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
New commits: commit aba61f7b4a89db67c475f59101258d6054196545 Author: Caolán McNamara <caol...@redhat.com> Date: Thu Jan 18 21:09:53 2018 +0000 ofz#5477 if the para is already oversize, nums would go negative Change-Id: I183e1377747f662da1204e90a24fb4f8f2268699 Reviewed-on: https://gerrit.libreoffice.org/48157 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Michael Stahl <mst...@redhat.com> diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx index 0ba0a04e53af..41fec1bf80b3 100644 --- a/editeng/source/editeng/impedit2.cxx +++ b/editeng/source/editeng/impedit2.cxx @@ -2722,12 +2722,13 @@ EditPaM ImpEditEngine::ImpInsertText(const EditSelection& aCurSel, const OUStrin if ( nEnd > nStart ) { OUString aLine = aText.copy( nStart, nEnd-nStart ); - sal_Int32 nChars = aPaM.GetNode()->Len() + aLine.getLength(); - if ( nChars > MAXCHARSINPARA ) + sal_Int32 nExistingChars = aPaM.GetNode()->Len(); + sal_Int32 nChars = nExistingChars + aLine.getLength(); + if (nChars > MAXCHARSINPARA) { - sal_Int32 nMaxNewChars = MAXCHARSINPARA-aPaM.GetNode()->Len(); + sal_Int32 nMaxNewChars = std::max<sal_Int32>(0, MAXCHARSINPARA - nExistingChars); nEnd -= ( aLine.getLength() - nMaxNewChars ); // Then the characters end up in the next paragraph. - aLine = aLine.copy( 0, nMaxNewChars ); // Delete the Rest... + aLine = aLine.copy( 0, nMaxNewChars ); // Delete the Rest... } if ( IsUndoEnabled() && !IsInUndo() ) InsertUndo(new EditUndoInsertChars(pEditEngine, CreateEPaM(aPaM), aLine)); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits