You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
libreoffice/0001-rhbz-1180114-writerfil...

168 lines
10 KiB

From f22964e0e622af1168e241f933e5cf98e093ec2b Mon Sep 17 00:00:00 2001
From: Michael Stahl <mstahl@redhat.com>
Date: Wed, 14 Jan 2015 23:01:41 +0100
Subject: [PATCH] rhbz#1180114: writerfilter: don't crash on
w:customXmlDelRangeStart etc.
We can't do anything sensible with these CustomXML elements but now we
have to handle them because.
(regression from 9dbf817fe5c5253fba0831aefa17575ae0ba3af1)
Change-Id: If4247890ff9961a77434587802670d28608a7922
---
sw/qa/extras/ooxmlimport/data/rhbz1180114.docx | Bin 0 -> 3435 bytes
sw/qa/extras/ooxmlimport/ooxmlimport.cxx | 5 +++++
writerfilter/source/dmapper/DomainMapper.cxx | 6 ++++++
writerfilter/source/dmapper/DomainMapper_Impl.cxx | 3 ++-
writerfilter/source/ooxml/model.xml | 16 ++++++++++++++++
5 files changed, 29 insertions(+), 1 deletion(-)
create mode 100644 sw/qa/extras/ooxmlimport/data/rhbz1180114.docx
diff --git a/sw/qa/extras/ooxmlimport/data/rhbz1180114.docx b/sw/qa/extras/ooxmlimport/data/rhbz1180114.docx
new file mode 100644
index 0000000000000000000000000000000000000000..23009ebbdc827c0d23fb9bac24b481548110f277
GIT binary patch
literal 3435
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
AG5`Po
literal 0
HcmV?d00001
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index 5bec69c..7e8c62d 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -757,6 +757,11 @@ DECLARE_OOXMLIMPORT_TEST(testN779834, "n779834.docx")
// This document simply crashed the importer.
}
+DECLARE_OOXMLIMPORT_TEST(testRHBZ1180114, "rhbz1180114.docx")
+{
+ // This document simply crashed the importer.
+}
+
DECLARE_OOXMLIMPORT_TEST(testN779627, "n779627.docx")
{
/*
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index cb45bb4..461c138 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -2213,6 +2213,12 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext )
case NS_ooxml::LN_CT_PPr_pPrChange:
case NS_ooxml::LN_trackchange:
case NS_ooxml::LN_EG_RPrContent_rPrChange:
+ case NS_ooxml::LN_EG_RangeMarkupElements_customXmlDelRangeStart:
+ case NS_ooxml::LN_EG_RangeMarkupElements_customXmlDelRangeEnd:
+ case NS_ooxml::LN_EG_RangeMarkupElements_customXmlMoveFromRangeStart:
+ case NS_ooxml::LN_EG_RangeMarkupElements_customXmlMoveFromRangeEnd:
+ case NS_ooxml::LN_EG_RangeMarkupElements_customXmlMoveToRangeStart:
+ case NS_ooxml::LN_EG_RangeMarkupElements_customXmlMoveToRangeEnd:
{
HandleRedline( rSprm );
}
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 57f491f..e97c133 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -4836,9 +4836,10 @@ void DomainMapper_Impl::SetCurrentRedlineId( sal_Int32 sId )
{
// This should be an assert, but somebody had the smart idea to reuse this function also for comments and whatnot,
// and in some cases the id is actually not handled, which may be in fact a bug.
- SAL_WARN( "writerfilter", !m_currentRedline.get());
if( m_currentRedline.get())
m_currentRedline->m_nId = sId;
+ else
+ SAL_INFO("writerfilter.dmapper", "no current redline");
}
}
diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml
index fc671af..f1c721f 100644
--- a/writerfilter/source/ooxml/model.xml
+++ b/writerfilter/source/ooxml/model.xml
@@ -17281,6 +17281,22 @@
<resource name="CT_TrackChange" resource="Properties">
<attribute name="author" tokenid="ooxml:CT_TrackChange_author"/>
<attribute name="date" tokenid="ooxml:CT_TrackChange_date"/>
+ <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlInsRangeStart" action="sendPropertiesWithId" sendtokenid="ooxml:EG_RangeMarkupElements_customXmlInsRangeStart"/>
+ <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlInsRangeStart" action="clearProps"/>
+ <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlInsRangeEnd" action="sendPropertiesWithId" sendtokenid="ooxml:EG_RangeMarkupElements_customXmlInsRangeEnd"/>
+ <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlInsRangeEnd" action="clearProps"/>
+ <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlDelRangeStart" action="sendPropertiesWithId" sendtokenid="ooxml:EG_RangeMarkupElements_customXmlDelRangeStart"/>
+ <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlDelRangeStart" action="clearProps"/>
+ <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlDelRangeEnd" action="sendPropertiesWithId" sendtokenid="ooxml:EG_RangeMarkupElements_customXmlDelRangeEnd"/>
+ <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlDelRangeEnd" action="clearProps"/>
+ <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveFromRangeStart" action="sendPropertiesWithId" sendtokenid="ooxml:EG_RangeMarkupElements_customXmlMoveFromRangeStart"/>
+ <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveFromRangeStart" action="clearProps"/>
+ <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveFromRangeEnd" action="sendPropertiesWithId" sendtokenid="ooxml:EG_RangeMarkupElements_customXmlMoveFromRangeEnd"/>
+ <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveFromRangeEnd" action="clearProps"/>
+ <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveToRangeStart" action="sendPropertiesWithId" sendtokenid="ooxml:EG_RangeMarkupElements_customXmlMoveToRangeStart"/>
+ <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveToRangeStart" action="clearProps"/>
+ <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveToRangeEnd" action="sendPropertiesWithId" sendtokenid="ooxml:EG_RangeMarkupElements_customXmlMoveToRangeEnd"/>
+ <action name="end" tokenid="ooxml:EG_RangeMarkupElements_customXmlMoveToRangeEnd" action="clearProps"/>
</resource>
<resource name="CT_CellMergeTrackChange" resource="Properties">
<attribute name="vMerge" tokenid="ooxml:CT_CellMergeTrackChange_vMerge"/>
--
2.1.0