diff options
-rw-r--r-- | sw/source/filter/html/htmltab.cxx | 18 |
1 files changed, 15 insertions, 3 deletions
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()); } |