[Libreoffice-commits] core.git: 2 commits - sw/source

Caolán McNamara caolanm at redhat.com
Thu Dec 14 10:13:27 UTC 2017


 sw/source/filter/html/htmltab.cxx |   22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

New commits:
commit 9b26a2ea8e7968d344ae8da12b314464e282c009
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Dec 13 13:41:15 2017 +0000

    ofz: various html problems
    
    Change-Id: Ie29a560c14e535e9a894212e5ed577f94a9064e7
    Reviewed-on: https://gerrit.libreoffice.org/46409
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sw/source/filter/html/htmltab.cxx b/sw/source/filter/html/htmltab.cxx
index 7296cd860348..6810a222c742 100644
--- a/sw/source/filter/html/htmltab.cxx
+++ b/sw/source/filter/html/htmltab.cxx
@@ -1190,8 +1190,13 @@ const SwStartNode* HTMLTable::GetPrevBoxStartNode( sal_uInt16 nRow, sal_uInt16 n
     while( pPrevCnts->Next() )
         pPrevCnts = pPrevCnts->Next();
 
-    return ( pPrevCnts->GetStartNode() ? pPrevCnts->GetStartNode()
-               : pPrevCnts->GetTable()->GetPrevBoxStartNode( USHRT_MAX, USHRT_MAX ) );
+    const SwStartNode* pRet = pPrevCnts->GetStartNode();
+    if (pRet)
+        return pRet;
+    HTMLTable* pTable = pPrevCnts->GetTable().get();
+    if (!pTable)
+        return nullptr;
+    return pTable->GetPrevBoxStartNode(USHRT_MAX, USHRT_MAX);
 }
 
 static bool IsBoxEmpty( const SwTableBox *pBox )
@@ -2658,7 +2663,7 @@ const SwStartNode *SwHTMLParser::InsertTableSection
         pStNd = pNd->FindTableBoxStartNode();
         m_xTable->m_bFirstCell = false;
     }
-    else
+    else if (pPrevStNd)
     {
         const SwNode* pNd;
         if( pPrevStNd->IsTableNode() )
@@ -2670,6 +2675,11 @@ const SwStartNode *SwHTMLParser::InsertTableSection
                                                   pColl );
         m_xTable->IncBoxCount();
     }
+    else
+    {
+        eState = SvParserState::Error;
+        return nullptr;
+    }
 
     //Added defaults to CJK and CTL
     SwContentNode *pCNd = m_xDoc->GetNodes()[pStNd->GetIndex()+1] ->GetContentNode();
@@ -5106,6 +5116,8 @@ std::shared_ptr<HTMLTable> SwHTMLParser::BuildTable(SvxAdjust eParentAdjust,
         while( m_aContexts.size() > m_nContextStAttrMin )
         {
             std::unique_ptr<HTMLAttrContext> xCntxt(PopContext());
+            if (!xCntxt)
+                break;
             ClearContext(xCntxt.get());
         }
 
commit ed8dd7f47793b8ef3cc76ce4cde4d7348b51baad
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Dec 13 20:22:11 2017 +0000

    ofz: skip tables when parser is invalid
    
    Change-Id: I8edc57be479ecd787fbf23b9e79fb81e47bab1d0
    Reviewed-on: https://gerrit.libreoffice.org/46424
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sw/source/filter/html/htmltab.cxx b/sw/source/filter/html/htmltab.cxx
index d0dd6dfd22de..7296cd860348 100644
--- a/sw/source/filter/html/htmltab.cxx
+++ b/sw/source/filter/html/htmltab.cxx
@@ -5112,7 +5112,7 @@ std::shared_ptr<HTMLTable> SwHTMLParser::BuildTable(SvxAdjust eParentAdjust,
         m_nContextStMin = pTCntxt->GetContextStMin();
         m_nContextStAttrMin = pTCntxt->GetContextStAttrMin();
 
-        if (m_xTable == xCurTable)
+        if (m_xTable == xCurTable && eState != SvParserState::Error)
         {
             // Set table caption
             const SwStartNode *pCapStNd = m_xTable->GetCaptionStartNode();
@@ -5171,7 +5171,7 @@ std::shared_ptr<HTMLTable> SwHTMLParser::BuildTable(SvxAdjust eParentAdjust,
         pTCntxt->RestorePREListingXMP( *this );
         RestoreAttrTab( pTCntxt->aAttrTab );
 
-        if (m_xTable == xCurTable)
+        if (m_xTable == xCurTable && eState != SvParserState::Error)
         {
             // Set upper paragraph spacing
             m_bUpperSpace = true;


More information about the Libreoffice-commits mailing list