writerfilter/source/dmapper/DomainMapper_Impl.cxx |    5 +++++
 1 file changed, 5 insertions(+)

New commits:
commit 1638c9d51e98a30c6521995d2817c61297df4f36
Author:     Miklos Vajna <[email protected]>
AuthorDate: Fri Oct 15 08:40:22 2021 +0200
Commit:     Miklos Vajna <[email protected]>
CommitDate: Mon Oct 18 15:50:10 2021 +0200

    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 <[email protected]>
    Reviewed-by: Mike Kaganski <[email protected]>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123737
    Reviewed-by: Miklos Vajna <[email protected]>

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)));

Reply via email to