[Libreoffice-commits] core.git: Branch 'libreoffice-4-2' - sw/qa writerfilter/source

Caolán McNamara caolanm at redhat.com
Tue Sep 30 13:25:52 PDT 2014


 sw/qa/core/data/ooxml/pass/fdo73608-1.docx               |binary
 sw/qa/core/data/ooxml/pass/fdo73608-2.docx               |binary
 writerfilter/source/dmapper/DomainMapperTableHandler.cxx |   16 ++++++++++++++-
 3 files changed, 15 insertions(+), 1 deletion(-)

New commits:
commit efd7c456fffc77a6bb2e85d3d89f98ccd4a0faba
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Sep 28 16:47:13 2014 +0100

    Related: fdo#73608 don't crash on missing table styles
    
    (cherry picked from commit 5fd7382651d64f77e8ad1d9a5c053f52f3641f9f)
    
    Conflicts:
    	writerfilter/source/dmapper/DomainMapperTableHandler.cxx
    
    Change-Id: I340b43b7afc4c5c4d6dc8e4ed182279240306540
    
    Resolves: fdo#73608 bail out on loop in style sheet hierarchy
    
    Change-Id: I03975d1ce8eaceceb4d5c263eb11c1521bcd57eb
    (cherry picked from commit be18133e84120625734a09380594ee89b23c4322)
    Reviewed-on: https://gerrit.libreoffice.org/11680
    Reviewed-by: Andras Timar <andras.timar at collabora.com>
    Tested-by: Andras Timar <andras.timar at collabora.com>

diff --git a/sw/qa/core/data/ooxml/pass/fdo73608-1.docx b/sw/qa/core/data/ooxml/pass/fdo73608-1.docx
new file mode 100644
index 0000000..d3cc84a
Binary files /dev/null and b/sw/qa/core/data/ooxml/pass/fdo73608-1.docx differ
diff --git a/sw/qa/core/data/ooxml/pass/fdo73608-2.docx b/sw/qa/core/data/ooxml/pass/fdo73608-2.docx
new file mode 100644
index 0000000..f558878
Binary files /dev/null and b/sw/qa/core/data/ooxml/pass/fdo73608-2.docx differ
diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
index 7b8d9cd..b4002d7 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() )
     {


More information about the Libreoffice-commits mailing list