diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-01-18 21:09:53 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2018-01-19 21:51:03 +0100 |
commit | 25d159dd764d917a04e46819bb8efcc2a6067cd6 (patch) | |
tree | 51aafde917469b7b9e0e3c79c5dd22031d62e3b2 /editeng | |
parent | 78a5ed18dc3368cfa78cfcfb54a08c600b4c0ab5 (diff) |
ofz#5477 if the para is already oversize, nums would go negative
Change-Id: I183e1377747f662da1204e90a24fb4f8f2268699
Reviewed-on: https://gerrit.libreoffice.org/48156
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'editeng')
-rw-r--r-- | editeng/source/editeng/impedit2.cxx | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx index c5d8c2ad4830..a7e5ef0c9ceb 100644 --- a/editeng/source/editeng/impedit2.cxx +++ b/editeng/source/editeng/impedit2.cxx @@ -2723,12 +2723,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)); |