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