summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2013-11-07 16:01:25 +0100
committerJan Holesovsky <kendy@collabora.com>2013-11-11 21:18:15 +0000
commit88cb2a731bf445776adb6c047010bbd0dae3c633 (patch)
tree6b70b4f3c7d05026cb169c97b0b4ca27d02111dc
parent267addb68a7665e71d3f263030c05466d746cbc8 (diff)
fdo#70812 writerfilter: check for nullptr after dynamic_cast
Happens when we set "no number" in the default para style, which is already the case for Writer anyway. (cherry picked from commit 660d761bfeea81c0b76cf08b4c961a2ad8d09a06) Conflicts: sw/qa/extras/ooxmlexport/ooxmlexport.cxx Change-Id: I3b262e633e52e4aae039c55d6edb744e36f0f354 Reviewed-on: https://gerrit.libreoffice.org/6636 Reviewed-by: Jan Holesovsky <kendy@collabora.com> Tested-by: Jan Holesovsky <kendy@collabora.com>
-rw-r--r--sw/qa/extras/ooxmlexport/data/fdo70812.docxbin0 -> 5530 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport.cxx8
-rw-r--r--writerfilter/source/dmapper/DomainMapper.cxx9
3 files changed, 14 insertions, 3 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/fdo70812.docx b/sw/qa/extras/ooxmlexport/data/fdo70812.docx
new file mode 100644
index 000000000000..b9b5d52c2086
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/fdo70812.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index 798336000437..c1bb45e40de4 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -76,6 +76,7 @@ public:
void testFdo60990();
void testBnc834035();
void testCp1000015();
+ void testFdo70812();
CPPUNIT_TEST_SUITE(Test);
#if !defined(MACOSX) && !defined(WNT)
@@ -136,6 +137,7 @@ void Test::run()
{"fdo60990.odt", &Test::testFdo60990},
{"bnc834035.odt", &Test::testBnc834035},
{"cp1000015.odt", &Test::testCp1000015},
+ {"fdo70812.docx", &Test::testFdo70812},
};
// Don't test the first import of these, for some reason those tests fail
const char* aBlacklist[] = {
@@ -781,6 +783,12 @@ void Test::testCp1000015()
getParagraph(2, "http://www.google.com/");
}
+void Test::testFdo70812()
+{
+ // Import just crashed.
+ getParagraph(1, "Sample pages document.");
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 5ac4b058ad9a..dfcf3a734b41 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -1561,7 +1561,8 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType
{
//style sheets cannot have a numbering rule attached
StyleSheetPropertyMap* pStyleSheetPropertyMap = dynamic_cast< StyleSheetPropertyMap* >( rContext.get() );
- pStyleSheetPropertyMap->SetListLevel( (sal_Int16)nIntValue );
+ if (pStyleSheetPropertyMap)
+ pStyleSheetPropertyMap->SetListLevel( (sal_Int16)nIntValue );
}
else
rContext->Insert( PROP_NUMBERING_LEVEL, true, uno::makeAny( (sal_Int16)nIntValue ));
@@ -1575,7 +1576,8 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType
{
//style sheets cannot have a numbering rule attached
StyleSheetPropertyMap* pStyleSheetPropertyMap = dynamic_cast< StyleSheetPropertyMap* >( rContext.get() );
- pStyleSheetPropertyMap->SetListId( nIntValue );
+ if (pStyleSheetPropertyMap)
+ pStyleSheetPropertyMap->SetListId( nIntValue );
}
if( pList.get( ) )
{
@@ -1593,7 +1595,8 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType
{
// set the number id for AbstractNum references
StyleSheetPropertyMap* pStyleSheetPropertyMap = dynamic_cast< StyleSheetPropertyMap* >( rContext.get() );
- pStyleSheetPropertyMap->SetNumId( nIntValue );
+ if (pStyleSheetPropertyMap)
+ pStyleSheetPropertyMap->SetNumId( nIntValue );
}
else
{