[Libreoffice-commits] core.git: Branch 'libreoffice-5-4-1' - sw/source

Michael Stahl mstahl at redhat.com
Thu Aug 24 21:32:48 UTC 2017


 sw/source/core/doc/DocumentContentOperationsManager.cxx |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

New commits:
commit b99f9c9559b9a3a2aa6337bb87be0ea1767ee7a7
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Aug 18 17:25:17 2017 +0200

    tdf#99692 sw: fix the fix: don't set bNullContent if node was split
    
    When showing the redlines in rhbz908615-13.odt, the following assertion
    happens:
    
    Assertion `IDocumentMarkAccess::IsLegalPaMForCrossRefHeadingBookmark(rPaM) && "<CrossRefBookmark::CrossRefBookmark(..)>" "- creation of cross-reference bookmark with an illegal PaM that does not expand over exactly one whole paragraph."' failed.
    
    This is because in DocumentContentOperationsManager::MoveRange() the
    flag bNullContent is set after the node has been split; in this case the
    nContent is of course always 0.
    
    Later the function then restores aSavePam to the index 0 of the next
    node, when it actually shouldn't do anything because the JoinNext()
    already positioned it correctly at the merge-index of the re-joined node.
    
    (regression from 850795942b3e168cab8ce88b4f2b421945ff29ca)
    
    Change-Id: I64d50e70b19e2fd81537a9771fa8706898b17642
    (cherry picked from commit 6a018363791945b6fd7f04f2aa311e4f4753f6aa)
    Reviewed-on: https://gerrit.libreoffice.org/41304
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    (cherry picked from commit cac440fd5a76f4a76565466cd9df363f5634e8bd)
    Reviewed-on: https://gerrit.libreoffice.org/41464
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
    Tested-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>

diff --git a/sw/source/core/doc/DocumentContentOperationsManager.cxx b/sw/source/core/doc/DocumentContentOperationsManager.cxx
index 32f7da7e99de..cfc4f4fe9605 100644
--- a/sw/source/core/doc/DocumentContentOperationsManager.cxx
+++ b/sw/source/core/doc/DocumentContentOperationsManager.cxx
@@ -2039,7 +2039,8 @@ bool DocumentContentOperationsManager::MoveRange( SwPaM& rPaM, SwPosition& rPos,
     // the manipulated range.
     // tdf#99692 don't Move() back if that would end up in another node
     // because moving backward is not necessarily the inverse of forward then.
-    const bool bNullContent = aSavePam.GetPoint()->nContent == 0;
+    // (but do Move() back if we have split the node)
+    const bool bNullContent = !bSplit && aSavePam.GetPoint()->nContent == 0;
     if( bNullContent )
     {
         aSavePam.GetPoint()->nNode--;


More information about the Libreoffice-commits mailing list