diff options
author | Balazs Varga <balazs.varga.extern@allotropia.de> | 2024-02-20 20:26:25 +0100 |
---|---|---|
committer | Xisco Fauli <xiscofauli@libreoffice.org> | 2024-02-22 11:14:50 +0100 |
commit | 656540497a555cc23d66881c3b987cc93ba2203c (patch) | |
tree | 91d7df46cc79ad6dfc62286b24c9fa88ded2fc0f | |
parent | tdf#159730 add compatibility option in RTF import (diff) | |
download | core-656540497a555cc23d66881c3b987cc93ba2203c.tar.gz core-656540497a555cc23d66881c3b987cc93ba2203c.zip |
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.extern@allotropia.de>
(cherry picked from commit 7cf3d5e3073dc5cffc64b6d9b32513e90087a3d4)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163626
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163720
-rw-r--r-- | writerfilter/qa/cppunittests/dmapper/DomainMapper.cxx | 6 | ||||
-rw-r--r-- | writerfilter/qa/cppunittests/dmapper/data/tdf158360.docx | bin | 0 -> 27389 bytes | |||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 5 |
3 files changed, 10 insertions, 1 deletions
diff --git a/writerfilter/qa/cppunittests/dmapper/DomainMapper.cxx b/writerfilter/qa/cppunittests/dmapper/DomainMapper.cxx index 97f856044d6c..c352c163cfe8 100644 --- a/writerfilter/qa/cppunittests/dmapper/DomainMapper.cxx +++ b/writerfilter/qa/cppunittests/dmapper/DomainMapper.cxx @@ -119,6 +119,12 @@ CPPUNIT_TEST_FIXTURE(Test, testFloattableThenTable) // Make sure the anchor text is the body text, not some cell. CPPUNIT_ASSERT_EQUAL(xBodyText, xAnchor->getText()); } + +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 Binary files differnew file mode 100644 index 000000000000..a46ee67c007e --- /dev/null +++ b/writerfilter/qa/cppunittests/dmapper/data/tdf158360.docx diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 4fa434431555..bbdbb117556b 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -3228,7 +3228,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); |