writerfilter/qa/cppunittests/dmapper/DomainMapper.cxx    |    6 ++++++
 writerfilter/qa/cppunittests/dmapper/data/tdf158360.docx |binary
 writerfilter/source/dmapper/DomainMapper_Impl.cxx        |    5 ++++-
 3 files changed, 10 insertions(+), 1 deletion(-)

New commits:
commit 0a300e60ed73f76eeb61035086df6cf857a2fa85
Author:     Balazs Varga <balazs.varga.ext...@allotropia.de>
AuthorDate: Tue Feb 20 20:26:25 2024 +0100
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Thu Feb 22 12:26:43 2024 +0100

    tdf#158360 - sw, ooxml import - fix insertTextPortion crash
    
    Before this patch da8dead8e9282010893cbd12519e107baf03cd1a
    SvxUnoTextBase::insertTextPortion returned an empty XTextRange
    in case of texts in comment. (SwTextAPIObject) Lets use
    finishParagraphInsert which also give back an empty XTextRange.
    
    regression from commit: da8dead8e9282010893cbd12519e107baf03cd1a
    (tdf#73537 - sc: show author and creation date in calc comments)
    
    Change-Id: I0b33e5b3cae32718a62a7be04b9a88562f85652c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163670
    Tested-by: Jenkins
    Reviewed-by: Balazs Varga <balazs.varga.ext...@allotropia.de>
    (cherry picked from commit 7cf3d5e3073dc5cffc64b6d9b32513e90087a3d4)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163626
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>
    (cherry picked from commit 64248c5d42bbf46eeb4c41e79dd0b5e4a360e280)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163629
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Tested-by: Michael Stahl <michael.st...@allotropia.de>
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>

diff --git a/writerfilter/qa/cppunittests/dmapper/DomainMapper.cxx 
b/writerfilter/qa/cppunittests/dmapper/DomainMapper.cxx
index 8452da0203ab..885443c5a210 100644
--- a/writerfilter/qa/cppunittests/dmapper/DomainMapper.cxx
+++ b/writerfilter/qa/cppunittests/dmapper/DomainMapper.cxx
@@ -155,6 +155,12 @@ CPPUNIT_TEST_FIXTURE(Test, testFdo78333)
     // just care that it doesn't crash/assert
     loadFromFile(u"fdo78333-1-minimized.docx");
 }
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf158360)
+{
+    // just test that doc with annotation in TOC doesn't crash/assert
+    loadFromFile(u"tdf158360.docx");
+}
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerfilter/qa/cppunittests/dmapper/data/tdf158360.docx 
b/writerfilter/qa/cppunittests/dmapper/data/tdf158360.docx
new file mode 100644
index 000000000000..a46ee67c007e
Binary files /dev/null and 
b/writerfilter/qa/cppunittests/dmapper/data/tdf158360.docx differ
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx 
b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 4ee9f58f3e4c..58568a910514 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -3253,7 +3253,10 @@ void DomainMapper_Impl::applyToggleAttributes(const 
PropertyMapPtr& pPropertyMap
                     {
                         xTOCTextCursor->goLeft(1, false);
                     }
-                    xTextRange = xTextAppend->insertTextPortion(rString, 
aValues, xTOCTextCursor);
+                    if (IsInComments())
+                        xTextRange = 
xTextAppend->finishParagraphInsert(aValues, xTOCTextCursor);
+                    else
+                        xTextRange = xTextAppend->insertTextPortion(rString, 
aValues, xTOCTextCursor);
                     SAL_WARN_IF(!xTextRange.is(), "writerfilter.dmapper", 
"insertTextPortion failed");
                     if (!xTextRange.is())
                         throw uno::Exception("insertTextPortion failed", 
nullptr);

Reply via email to