summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sw/source/filter/html/htmltab.cxx18
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());
}