summaryrefslogtreecommitdiff
path: root/sw/source
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-12-13 12:46:34 +0000
committerCaolán McNamara <caolanm@redhat.com>2017-12-14 11:06:45 +0100
commit5399998c498bd3047ecb430868d3aa0cde61fef2 (patch)
tree042999af0be684589941ee2c5e6d882968d6e2a3 /sw/source
parenta5c201790bac259da6666543852c8734ed4a9132 (diff)
fiddle with leaks some more
Change-Id: Ia4297ce2b537953fe2262b645b7bf7f8a85b5d41 Reviewed-on: https://gerrit.libreoffice.org/46408 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sw/source')
-rw-r--r--sw/source/core/doc/htmltbl.cxx7
-rw-r--r--sw/source/filter/html/htmlctxt.cxx1
-rw-r--r--sw/source/filter/html/htmlgrin.cxx2
-rw-r--r--sw/source/filter/html/htmltab.cxx35
4 files changed, 27 insertions, 18 deletions
diff --git a/sw/source/core/doc/htmltbl.cxx b/sw/source/core/doc/htmltbl.cxx
index 7c45dd598f16..a234f7bfbf13 100644
--- a/sw/source/core/doc/htmltbl.cxx
+++ b/sw/source/core/doc/htmltbl.cxx
@@ -545,10 +545,9 @@ void SwHTMLTableLayout::AutoLayoutPass1()
nIdx++;
}
}
- else
+ else if (SwHTMLTableLayout *pChild = pCnts->GetTable())
{
OSL_ENSURE( false, "Sub tables in HTML import?" );
- SwHTMLTableLayout *pChild = pCnts->GetTable();
pChild->AutoLayoutPass1();
sal_uLong nMaxTableCnts = pChild->m_nMax;
sal_uLong nAbsMinTableCnts = pChild->m_nMin;
@@ -1592,7 +1591,7 @@ void SwHTMLTableLayout::SetWidths( bool bCallPass2, sal_uInt16 nAbsAvail,
{
SetBoxWidth( pBox, j, pCell->GetColSpan() );
}
- else
+ else if (SwHTMLTableLayout *pTable = pContents->GetTable())
{
sal_uInt16 nAbs = 0, nRel = 0, nLSpace = 0, nRSpace = 0,
nInhSpace = 0;
@@ -1604,7 +1603,7 @@ void SwHTMLTableLayout::SetWidths( bool bCallPass2, sal_uInt16 nAbsAvail,
nRSpace = GetRightCellSpace( j, nColSpan );
nInhSpace = GetInhCellSpace( j, nColSpan );
}
- pContents->GetTable()->SetWidths( bCallPass2, nAbs, nRel,
+ pTable->SetWidths( bCallPass2, nAbs, nRel,
nLSpace, nRSpace,
nInhSpace );
}
diff --git a/sw/source/filter/html/htmlctxt.cxx b/sw/source/filter/html/htmlctxt.cxx
index 91b7384c844d..263c347b01b7 100644
--- a/sw/source/filter/html/htmlctxt.cxx
+++ b/sw/source/filter/html/htmlctxt.cxx
@@ -375,6 +375,7 @@ void SwHTMLParser::ClearContext( HTMLAttrContext *pContext )
// but if you get that wrong, quite a lot is messed up
DeleteAttr( pAttr );
}
+ rAttrs.clear();
OSL_ENSURE( !pContext->GetSpansSection(),
"Area can no longer be exited" );
diff --git a/sw/source/filter/html/htmlgrin.cxx b/sw/source/filter/html/htmlgrin.cxx
index e2781d6e7d5f..54e967e661f4 100644
--- a/sw/source/filter/html/htmlgrin.cxx
+++ b/sw/source/filter/html/htmlgrin.cxx
@@ -263,7 +263,7 @@ void SwHTMLParser::SetAnchorAndAdjustment( sal_Int16 eVertOri,
if (aAnchor.GetAnchorId() == RndStdIds::FLY_AS_CHAR && !m_pPam->GetNode().GetTextNode())
{
eState = SvParserState::Error;
- throw std::runtime_error("missing paragraph");
+ return;
}
aAnchor.SetAnchor( m_pPam->GetPoint() );
diff --git a/sw/source/filter/html/htmltab.cxx b/sw/source/filter/html/htmltab.cxx
index 80d0d883d8e8..d0dd6dfd22de 100644
--- a/sw/source/filter/html/htmltab.cxx
+++ b/sw/source/filter/html/htmltab.cxx
@@ -1673,9 +1673,9 @@ SwTableBox *HTMLTable::MakeTableBox( SwTableLine *pUpper,
pBox = NewTableBox( pCnts->GetStartNode(), pUpper );
pCnts->SetTableBox( pBox );
}
- else
+ else if (HTMLTable* pTable = pCnts->GetTable().get())
{
- pCnts->GetTable()->InheritVertBorders( this, nLeftCol,
+ pTable->InheritVertBorders( this, nLeftCol,
nRightCol-nLeftCol );
// ... that's a table. We'll build a new box and put the rows of the table
// in the rows of the box
@@ -1688,6 +1688,10 @@ SwTableBox *HTMLTable::MakeTableBox( SwTableLine *pUpper,
pCnts->GetTable()->MakeTable( pBox, nAbs, nRel, nLSpace, nRSpace,
nInhSpace );
}
+ else
+ {
+ return nullptr;
+ }
}
else
{
@@ -2707,7 +2711,7 @@ const SwStartNode *SwHTMLParser::InsertTableSection( sal_uInt16 nPoolId )
if (!pTableNd)
{
eState = SvParserState::Error;
- throw std::runtime_error("missing table");
+ return nullptr;
}
if( pTableNd->GetTable().GetHTMLTableLayout() )
{ // if there is already a HTMTableLayout, this table is already finished
@@ -2731,7 +2735,6 @@ const SwStartNode *SwHTMLParser::InsertTableSection( sal_uInt16 nPoolId )
if (!pStNd)
{
eState = SvParserState::Error;
- throw std::runtime_error("missing table start node");
}
return pStNd;
@@ -3900,15 +3903,21 @@ void SwHTMLParser::BuildTableCell( HTMLTable *pCurTable, bool bReadOptions,
InsertTableSection( static_cast< sal_uInt16 >(xSaveStruct->IsHeaderCell()
? RES_POOLCOLL_TABLE_HDLN
: RES_POOLCOLL_TABLE ));
- const SwEndNode *pEndNd = pStNd->EndOfSectionNode();
- SwContentNode *pCNd = m_xDoc->GetNodes()[pEndNd->GetIndex()-1] ->GetContentNode();
- //Added defaults to CJK and CTL
- SvxFontHeightItem aFontHeight( 40, 100, RES_CHRATR_FONTSIZE );
- pCNd->SetAttr( aFontHeight );
- SvxFontHeightItem aFontHeightCJK( 40, 100, RES_CHRATR_CJK_FONTSIZE );
- pCNd->SetAttr( aFontHeightCJK );
- SvxFontHeightItem aFontHeightCTL( 40, 100, RES_CHRATR_CTL_FONTSIZE );
- pCNd->SetAttr( aFontHeightCTL );
+
+ if (!pStNd)
+ eState = SvParserState::Error;
+ else
+ {
+ const SwEndNode *pEndNd = pStNd->EndOfSectionNode();
+ SwContentNode *pCNd = m_xDoc->GetNodes()[pEndNd->GetIndex()-1] ->GetContentNode();
+ //Added defaults to CJK and CTL
+ SvxFontHeightItem aFontHeight( 40, 100, RES_CHRATR_FONTSIZE );
+ pCNd->SetAttr( aFontHeight );
+ SvxFontHeightItem aFontHeightCJK( 40, 100, RES_CHRATR_CJK_FONTSIZE );
+ pCNd->SetAttr( aFontHeightCJK );
+ SvxFontHeightItem aFontHeightCTL( 40, 100, RES_CHRATR_CTL_FONTSIZE );
+ pCNd->SetAttr( aFontHeightCTL );
+ }
xSaveStruct->AddContents( new HTMLTableCnts(pStNd) );
xSaveStruct->ClearIsInSection();