[Libreoffice-commits] core.git: sw/source
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Sun Dec 27 19:32:53 UTC 2020
sw/source/filter/ww8/ww8scan.cxx | 28 ++++++++++++++--------------
sw/source/filter/ww8/ww8scan.hxx | 3 +--
2 files changed, 15 insertions(+), 16 deletions(-)
New commits:
commit 2f269aae084a7366a6111185f86a5e852629dfa8
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Dec 24 15:00:09 2020 +0000
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Sun Dec 27 20:32:15 2020 +0100
ofz#28926 Direct-leak
Change-Id: I6be3fd88ea092309de63389d64c25d7a28195d3d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108270
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/sw/source/filter/ww8/ww8scan.cxx b/sw/source/filter/ww8/ww8scan.cxx
index bee3a698c326..302c6c62318d 100644
--- a/sw/source/filter/ww8/ww8scan.cxx
+++ b/sw/source/filter/ww8/ww8scan.cxx
@@ -5051,7 +5051,7 @@ WW8PLCFMan::WW8PLCFMan(const WW8ScannerBase* pBase, ManTypes nType, tools::Long
p->nCp2OrIdx = 0;
p->bFirstSprm = false;
- p->pIdStack = nullptr;
+ p->xIdStack.reset();
if ((p == m_pChp) || (p == m_pPap))
p->nStartPos = p->nEndPos = nStartCp;
@@ -5072,7 +5072,7 @@ WW8PLCFMan::WW8PLCFMan(const WW8ScannerBase* pBase, ManTypes nType, tools::Long
if( p->pPLCFx->IsSprm() )
{
// Careful: nEndPos must be
- p->pIdStack = new std::stack<sal_uInt16>;
+ p->xIdStack.reset(new std::stack<sal_uInt16>);
if ((p == m_pChp) || (p == m_pPap))
{
WW8_CP nTemp = p->nEndPos+p->nCpOfs;
@@ -5095,7 +5095,7 @@ WW8PLCFMan::WW8PLCFMan(const WW8ScannerBase* pBase, ManTypes nType, tools::Long
WW8PLCFMan::~WW8PLCFMan()
{
for( sal_uInt16 i=0; i<m_nPLCF; i++)
- delete m_aD[i].pIdStack;
+ m_aD[i].xIdStack.reset();
}
// 0. which attr class,
@@ -5268,8 +5268,8 @@ void WW8PLCFMan::GetSprmEnd( short nIdx, WW8PLCFManResult* pRes ) const
const WW8PLCFxDesc* p = &m_aD[nIdx];
- if (!(p->pIdStack->empty()))
- pRes->nSprmId = p->pIdStack->top(); // get end position
+ if (!(p->xIdStack->empty()))
+ pRes->nSprmId = p->xIdStack->top(); // get end position
else
{
OSL_ENSURE( false, "No Id on the Stack" );
@@ -5334,12 +5334,12 @@ void WW8PLCFMan::TransferOpenSprms(std::stack<sal_uInt16> &rStack)
for (sal_uInt16 i = 0; i < m_nPLCF; ++i)
{
WW8PLCFxDesc* p = &m_aD[i];
- if (!p || !p->pIdStack)
+ if (!p || !p->xIdStack)
continue;
- while (!p->pIdStack->empty())
+ while (!p->xIdStack->empty())
{
- rStack.push(p->pIdStack->top());
- p->pIdStack->pop();
+ rStack.push(p->xIdStack->top());
+ p->xIdStack->pop();
}
}
}
@@ -5355,7 +5355,7 @@ void WW8PLCFMan::AdvSprm(short nIdx, bool bStart)
const sal_uInt16 nLastAttribStarted = IsSprmLegalForCategory(nLastId, nIdx) ? nLastId : 0;
- p->pIdStack->push(nLastAttribStarted); // remember Id for attribute end
+ p->xIdStack->push(nLastAttribStarted); // remember Id for attribute end
if( p->nSprmsLen )
{ /*
@@ -5387,9 +5387,9 @@ void WW8PLCFMan::AdvSprm(short nIdx, bool bStart)
}
else
{
- if (!(p->pIdStack->empty()))
- p->pIdStack->pop();
- if (p->pIdStack->empty())
+ if (!(p->xIdStack->empty()))
+ p->xIdStack->pop();
+ if (p->xIdStack->empty())
{
if ( (p == m_pChp) || (p == m_pPap) )
{
@@ -5475,7 +5475,7 @@ void WW8PLCFMan::AdvNoSprm(short nIdx, bool bStart)
p->nStartPos = m_aD[nIdx+1].nStartPos;
else
{
- if (m_aD[nIdx+1].pIdStack->empty())
+ if (m_aD[nIdx+1].xIdStack->empty())
{
WW8PLCFx_PCD *pTemp = static_cast<WW8PLCFx_PCD*>(m_pPcd->pPLCFx);
/*
diff --git a/sw/source/filter/ww8/ww8scan.hxx b/sw/source/filter/ww8/ww8scan.hxx
index e6b6a8c65373..7165aa9749f2 100644
--- a/sw/source/filter/ww8/ww8scan.hxx
+++ b/sw/source/filter/ww8/ww8scan.hxx
@@ -878,7 +878,7 @@ enum ManTypes // enums for PLCFMan-ctor
struct WW8PLCFxDesc
{
WW8PLCFx* pPLCFx;
- std::stack<sal_uInt16>* pIdStack; // memory for Attr-Id for Attr-end(s)
+ std::unique_ptr<std::stack<sal_uInt16>> xIdStack; // memory for Attr-Id for Attr-end(s)
const sal_uInt8* pMemPos;// where are the Sprm(s)
tools::Long nOrigSprmsLen;
@@ -910,7 +910,6 @@ struct WW8PLCFxDesc
//existing ones.
WW8PLCFxDesc()
: pPLCFx(nullptr)
- , pIdStack(nullptr)
, pMemPos(nullptr)
, nOrigSprmsLen(0)
, nStartPos(WW8_CP_MAX)
More information about the Libreoffice-commits
mailing list