76e0e0
From 3925cf39742ebee935498b14571f13f3e8b64b49 Mon Sep 17 00:00:00 2001
76e0e0
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
76e0e0
Date: Sat, 19 Feb 2022 20:43:33 +0000
76e0e0
Subject: [PATCH] EditTextObjectImpl copy ctor doesn't exactly copy
76e0e0
 EditTextObjectImpl
76e0e0
MIME-Version: 1.0
76e0e0
Content-Type: text/plain; charset=UTF-8
76e0e0
Content-Transfer-Encoding: 8bit
76e0e0
76e0e0
and this is apparently relied on, so eliding the copy gives unexpected
76e0e0
results.
76e0e0
76e0e0
EditTextObjectImpl::Clone returns a copy of *this, but the
76e0e0
EditTextObjectImpl copy ctor explicitly does not copy the "PortionInfo"
76e0e0
member, so in:
76e0e0
76e0e0
commit fb8973f31f111229be5184f4e4223e963ced2c7b
76e0e0
Author: Caolán McNamara <caolanm@redhat.com>
76e0e0
Date:   Sat Oct 10 19:21:38 2020 +0100
76e0e0
76e0e0
    ofz#23492 the only user of this ctor throws away the original of the clone
76e0e0
76e0e0
    so we can take ownership of the original instead
76e0e0
76e0e0
where the copy was optimized away we want from a state where there was a
76e0e0
new EditTextObjectImpl with an empty PortionInfo member to one where the
76e0e0
PortionInfo of the EditTextObjectImpl was retained.
76e0e0
76e0e0
So explicitly clear this unwanted info.
76e0e0
76e0e0
It's very hard to make rational judgements about code if a copy behaves
76e0e0
differently than the orignal :-(
76e0e0
76e0e0
Change-Id: I642d60841d6bdccbf830f8a2ccdbd9f542a8aa18
76e0e0
---
76e0e0
 editeng/source/outliner/outliner.cxx | 1 +
76e0e0
 1 file changed, 1 insertion(+)
76e0e0
76e0e0
diff --git a/editeng/source/outliner/outliner.cxx b/editeng/source/outliner/outliner.cxx
76e0e0
index 9c474131352c..d48e4a542723 100644
76e0e0
--- a/editeng/source/outliner/outliner.cxx
76e0e0
+++ b/editeng/source/outliner/outliner.cxx
76e0e0
@@ -383,6 +383,7 @@ std::unique_ptr<OutlinerParaObject> Outliner::CreateParaObject( sal_Int32 nStart
76e0e0
         aParagraphDataVector[nPara-nStartPara] = *GetParagraph(nPara);
76e0e0
     }
76e0e0
 
76e0e0
+    xText->ClearPortionInfo(); // tdf#147166 the PortionInfo is unwanted here
76e0e0
     std::unique_ptr<OutlinerParaObject> pPObj(new OutlinerParaObject(std::move(xText), aParagraphDataVector, bIsEditDoc));
76e0e0
     pPObj->SetOutlinerMode(GetMode());
76e0e0
 
76e0e0
-- 
76e0e0
2.35.1
76e0e0