summaryrefslogtreecommitdiff
path: root/writerfilter/source
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2021-10-15 08:40:22 +0200
committerMiklos Vajna <vmiklos@collabora.com>2021-10-19 13:00:53 +0200
commit05f1990cbdcd99f7ba4863b91a8f1f298b56326a (patch)
tree44d57d4b18efaf85174921473507342578b5f5cb /writerfilter/source
parent8154131ca8ae47fda4928b56ba622634bae8fe01 (diff)
writerfilter: give up if body text is missing
Crashreport trace: writerfilter::dmapper::DomainMapper_Impl::DomainMapper_Impl(writerfilter::dmapper::DomainMapper&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, com::sun::star::uno::Reference<com::sun::star::lang::XComponent> const&, writerfilter::dmapper::SourceDocumentType, utl::MediaDescriptor const&) writerfilter/source/dmapper/DomainMapper_Impl.cxx:359 (discriminator 2) writerfilter::dmapper::DomainMapper::DomainMapper(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, com::sun::star::uno::Reference<com::sun::star::io::XInputStream> const&, com::sun::star::uno::Reference<com::sun::star::lang::XComponent> const&, bool, writerfilter::dmapper::SourceDocumentType, utl::MediaDescriptor const&) writerfilter/source/dmapper/DomainMapper.cxx:113 writerfilter::dmapper::DomainMapperFactory::createMapper(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, com::sun::star::uno::Reference<com::sun::star::io::XInputStream> const&, com::sun::star::uno::Reference<com::sun::star::lang::XComponent> const&, bool, writerfilter::dmapper::SourceDocumentType, utl::MediaDescriptor const&) writerfilter/source/dmapper/domainmapperfactory.cxx:34 ollaboraoffice6.4/program/../program/libwriterfilterlo.so RtfFilter::filter(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) writerfilter/source/filter/RtfFilter.cxx:152 I.e. we end up in a situation where the insert position does not have a containing XText. It's hard to continue from that point and this is in the ctor of the dmapper, so we didn't start the import. Just throw an exception to avoid further crashes. Change-Id: Idb5c06186a82c00b838d0b3330260340eb4218b9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123795 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
Diffstat (limited to 'writerfilter/source')
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx5
1 files changed, 5 insertions, 0 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 0dcaa197962b..3be1aa56024c 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -361,6 +361,11 @@ DomainMapper_Impl::DomainMapper_Impl(
appendTableManager( );
GetBodyText();
+ if (!m_bIsNewDoc && !m_xBodyText)
+ {
+ throw uno::Exception("failed to find body text of the insert position", nullptr);
+ }
+
uno::Reference< text::XTextAppend > xBodyTextAppend( m_xBodyText, uno::UNO_QUERY );
m_aTextAppendStack.push(TextAppendContext(xBodyTextAppend,
m_bIsNewDoc ? uno::Reference<text::XTextCursor>() : m_xBodyText->createTextCursorByRange(m_xInsertTextRange)));