diff options
-rw-r--r-- | sw/qa/core/data/ooxml/pass/fdo73608-1.docx | bin | 0 -> 11066 bytes | |||
-rw-r--r-- | sw/qa/core/data/ooxml/pass/fdo73608-2.docx | bin | 0 -> 11064 bytes | |||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapperTableHandler.cxx | 16 |
3 files changed, 15 insertions, 1 deletions
diff --git a/sw/qa/core/data/ooxml/pass/fdo73608-1.docx b/sw/qa/core/data/ooxml/pass/fdo73608-1.docx Binary files differnew file mode 100644 index 000000000000..d3cc84a6edb9 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/fdo73608-1.docx diff --git a/sw/qa/core/data/ooxml/pass/fdo73608-2.docx b/sw/qa/core/data/ooxml/pass/fdo73608-2.docx Binary files differnew file mode 100644 index 000000000000..f5588782cd22 --- /dev/null +++ b/sw/qa/core/data/ooxml/pass/fdo73608-2.docx diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx index 7b8d9cd9a42d..b4002d7fd795 100644 --- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx +++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx @@ -116,9 +116,17 @@ void DomainMapperTableHandler::startTable(unsigned int nRows, PropertyMapPtr lcl_SearchParentStyleSheetAndMergeProperties(const StyleSheetEntryPtr pStyleSheet, StyleSheetTablePtr pStyleSheetTable) { PropertyMapPtr pRet; + + if (!pStyleSheet) + return pRet; + if(!pStyleSheet->sBaseStyleIdentifier.isEmpty()) { const StyleSheetEntryPtr pParentStyleSheet = pStyleSheetTable->FindStyleSheetByISTD( pStyleSheet->sBaseStyleIdentifier ); + //a loop in the style hierarchy, bail out + if (pParentStyleSheet == pStyleSheet) + return pRet; + pRet = lcl_SearchParentStyleSheetAndMergeProperties( pParentStyleSheet, pStyleSheetTable ); } else @@ -126,7 +134,10 @@ PropertyMapPtr lcl_SearchParentStyleSheetAndMergeProperties(const StyleSheetEntr pRet.reset( new PropertyMap ); } - pRet->InsertProps(pStyleSheet->pProperties); + if (pRet) + { + pRet->InsertProps(pStyleSheet->pProperties); + } return pRet; } @@ -291,6 +302,9 @@ namespace bool lcl_extractTableBorderProperty(PropertyMapPtr pTableProperties, const PropertyIds nId, TableInfo& rInfo, table::BorderLine2& rLine) { + if (!pTableProperties) + return false; + PropertyMap::iterator aTblBorderIter = pTableProperties->find(nId); if( aTblBorderIter != pTableProperties->end() ) { |