diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2021-10-15 08:40:22 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2021-10-18 15:50:10 +0200 |
commit | 1638c9d51e98a30c6521995d2817c61297df4f36 (patch) | |
tree | 66195255c3bfb8d6abc830f000d81c6f03ed76dc | |
parent | 7fee2a542eca7e346c9dd79fdf02cf0ef8febe8c (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/+/123616
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123737
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 0d008bf78618..33ab5c6853fa 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -360,6 +360,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))); |