From b4de5e9f55ed9a9d1d161bab5e96a66c88fc1236 Mon Sep 17 00:00:00 2001 From: Eike Rathke Date: Wed, 19 Jan 2022 21:32:21 +0100 Subject: Resolves: tdf#139974 Do not munge character after forced line break A classical +-1 error.. Change-Id: I8b6bc0843fa585d8a710c74f757098ab9c6f823d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128637 Reviewed-by: Eike Rathke Tested-by: Jenkins (cherry picked from commit 2cfa04cbf03fe5c2ce32a7384082cdc5de5a4785) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128541 Reviewed-by: Adolfo Jayme Barrientos (cherry picked from commit 2b8946e52fa170c7df4bf71440e2ed63474db28f) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128668 Reviewed-by: Xisco Fauli Reviewed-by: Michael Stahl Tested-by: Michael Stahl --- editeng/source/editeng/impedit2.cxx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx index cbbfddff51c7..53748a9d4ce9 100644 --- a/editeng/source/editeng/impedit2.cxx +++ b/editeng/source/editeng/impedit2.cxx @@ -2728,8 +2728,10 @@ EditPaM ImpEditEngine::ImpInsertText(const EditSelection& aCurSel, const OUStrin if (nChars > MAXCHARSINPARA) { sal_Int32 nMaxNewChars = std::max(0, MAXCHARSINPARA - nExistingChars); - nEnd -= ( aLine.getLength() - nMaxNewChars ); // Then the characters end up in the next paragraph. - aLine = aLine.copy( 0, nMaxNewChars ); // Delete the Rest... + // Remaining characters end up in the next paragraph. Note that + // new nStart will be nEnd+1 below so decrement by one more. + nEnd -= (aLine.getLength() - nMaxNewChars + 1); + aLine = aLine.copy( 0, nMaxNewChars ); // Delete the Rest... } if ( IsUndoEnabled() && !IsInUndo() ) InsertUndo(std::make_unique(pEditEngine, CreateEPaM(aPaM), aLine)); -- cgit