summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-12-23 17:14:11 +0000
committerCaolán McNamara <caolanm@redhat.com>2020-12-23 19:48:08 +0100
commit473ca9b7530df1e7d24e2fc36b88619b73029ac8 (patch)
tree70dde426043f2ced043a0047011812a2e67c3060 /sc
parentd42c73d0bc064633a51db8c1d5fa9e2f60cba5e8 (diff)
ofz#28910 Direct-leak in MemNew
Change-Id: I108e8dae8fa32feef0a56412dcaeb92e9d714975 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108240 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sc')
-rw-r--r--sc/source/filter/lotus/lotfilter.hxx5
-rw-r--r--sc/source/filter/lotus/lotus.cxx12
-rw-r--r--sc/source/filter/lotus/memory.cxx25
-rw-r--r--sc/source/filter/lotus/tool.cxx12
4 files changed, 27 insertions, 27 deletions
diff --git a/sc/source/filter/lotus/lotfilter.hxx b/sc/source/filter/lotus/lotfilter.hxx
index 043e950525ce..5a074cab7df7 100644
--- a/sc/source/filter/lotus/lotfilter.hxx
+++ b/sc/source/filter/lotus/lotfilter.hxx
@@ -45,9 +45,9 @@ struct LotusContext
ScDocument& rDoc; // reference to access document
std::map<sal_uInt16, ScPatternAttr> aLotusPatternPool;
- SvxHorJustifyItem *pAttrRight, *pAttrLeft, *pAttrCenter, *pAttrRepeat, *pAttrStandard;
+ std::unique_ptr<SvxHorJustifyItem> xAttrRight, xAttrLeft, xAttrCenter, xAttrRepeat, xAttrStandard;
- FormCache* pValueFormCache; // -> initialized in memory.cxx
+ std::unique_ptr<FormCache> xValueFormCache; // -> initialized in memory.cxx
LotusRangeList maRangeNames;
Lotus123Typ eFirstType;
@@ -58,6 +58,7 @@ struct LotusContext
LotAttrTable maAttrTable;
LotusContext(ScDocument& rDocP, rtl_TextEncoding eQ);
+ ~LotusContext();
};
#endif
diff --git a/sc/source/filter/lotus/lotus.cxx b/sc/source/filter/lotus/lotus.cxx
index 291471e1b880..7d7dc17f88a3 100644
--- a/sc/source/filter/lotus/lotus.cxx
+++ b/sc/source/filter/lotus/lotus.cxx
@@ -20,12 +20,13 @@
#include "lotfilter.hxx"
#include <lotimpop.hxx>
+#include <editeng/justifyitem.hxx>
#include <sfx2/docfile.hxx>
#include <tools/urlobj.hxx>
-
#include <scerrors.hxx>
#include <filtopt.hxx>
#include <ftools.hxx>
+#include <tool.h>
ErrCode ScFormatFilterPluginImpl::ScImportLotus123( SfxMedium& rMedium, ScDocument& rDocument, rtl_TextEncoding eSrc )
{
@@ -85,12 +86,6 @@ LotusContext::LotusContext(ScDocument& rDocP, rtl_TextEncoding eQ)
, bEOF(false)
, eCharset(eQ)
, rDoc(rDocP)
- , pAttrRight(nullptr)
- , pAttrLeft(nullptr)
- , pAttrCenter(nullptr)
- , pAttrRepeat(nullptr)
- , pAttrStandard(nullptr)
- , pValueFormCache(nullptr)
, maRangeNames()
, eFirstType( Lotus123Typ::X)
, eActType( Lotus123Typ::X)
@@ -99,5 +94,8 @@ LotusContext::LotusContext(ScDocument& rDocP, rtl_TextEncoding eQ)
{
}
+LotusContext::~LotusContext()
+{
+}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/filter/lotus/memory.cxx b/sc/source/filter/lotus/memory.cxx
index a5543daa8229..97ba1654cc3d 100644
--- a/sc/source/filter/lotus/memory.cxx
+++ b/sc/source/filter/lotus/memory.cxx
@@ -29,26 +29,27 @@
bool MemNew(LotusContext& rContext)
{
- rContext.pValueFormCache = new FormCache(&rContext.rDoc);
+ rContext.xValueFormCache.reset(new FormCache(&rContext.rDoc));
// for tool.cxx::PutFormString()
- rContext.pAttrRight = new SvxHorJustifyItem(SvxCellHorJustify::Right, ATTR_HOR_JUSTIFY);
- rContext.pAttrLeft = new SvxHorJustifyItem(SvxCellHorJustify::Left, ATTR_HOR_JUSTIFY);
- rContext.pAttrCenter = new SvxHorJustifyItem(SvxCellHorJustify::Center, ATTR_HOR_JUSTIFY);
- rContext.pAttrRepeat = new SvxHorJustifyItem(SvxCellHorJustify::Repeat, ATTR_HOR_JUSTIFY);
- rContext.pAttrStandard = new SvxHorJustifyItem(SvxCellHorJustify::Standard, ATTR_HOR_JUSTIFY);
+ rContext.xAttrRight.reset(new SvxHorJustifyItem(SvxCellHorJustify::Right, ATTR_HOR_JUSTIFY));
+ rContext.xAttrLeft.reset(new SvxHorJustifyItem(SvxCellHorJustify::Left, ATTR_HOR_JUSTIFY));
+ rContext.xAttrCenter.reset(new SvxHorJustifyItem(SvxCellHorJustify::Center, ATTR_HOR_JUSTIFY));
+ rContext.xAttrRepeat.reset(new SvxHorJustifyItem(SvxCellHorJustify::Repeat, ATTR_HOR_JUSTIFY));
+ rContext.xAttrStandard.reset(
+ new SvxHorJustifyItem(SvxCellHorJustify::Standard, ATTR_HOR_JUSTIFY));
return true;
}
void MemDelete(LotusContext& rContext)
{
- delete rContext.pValueFormCache;
- delete rContext.pAttrRight;
- delete rContext.pAttrLeft;
- delete rContext.pAttrCenter;
- delete rContext.pAttrRepeat;
- delete rContext.pAttrStandard;
+ rContext.xValueFormCache.reset();
+ rContext.xAttrRight.reset();
+ rContext.xAttrLeft.reset();
+ rContext.xAttrCenter.reset();
+ rContext.xAttrRepeat.reset();
+ rContext.xAttrStandard.reset();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/filter/lotus/tool.cxx b/sc/source/filter/lotus/tool.cxx
index fb711db71c5b..c57e37f422b0 100644
--- a/sc/source/filter/lotus/tool.cxx
+++ b/sc/source/filter/lotus/tool.cxx
@@ -49,26 +49,26 @@ void PutFormString(LotusContext& rContext, SCCOL nCol, SCROW nRow, SCTAB nTab, c
switch( cForm )
{
case '"': // align-right
- pJustify = rContext.pAttrRight;
+ pJustify = rContext.xAttrRight.get();
pString++;
break;
case '\'': // align-left
- pJustify = rContext.pAttrLeft;
+ pJustify = rContext.xAttrLeft.get();
pString++;
break;
case '^': // centered
- pJustify = rContext.pAttrCenter;
+ pJustify = rContext.xAttrCenter.get();
pString++;
break;
case '|': // printer command
pString = nullptr;
break;
case '\\': // repetition
- pJustify = rContext.pAttrRepeat;
+ pJustify = rContext.xAttrRepeat.get();
pString++;
break;
default: // undefined case!
- pJustify = rContext.pAttrStandard;
+ pJustify = rContext.xAttrStandard.get();
}
if (!pString)
@@ -91,7 +91,7 @@ void SetFormat(LotusContext& rContext, SCCOL nCol, SCROW nRow, SCTAB nTab, sal_u
nTab = SanitizeTab(nTab);
// PREC: nSt = default number of decimal places
- rContext.rDoc.ApplyAttr(nCol, nRow, nTab, *(rContext.pValueFormCache->GetAttr(nFormat, nSt)));
+ rContext.rDoc.ApplyAttr(nCol, nRow, nTab, *(rContext.xValueFormCache->GetAttr(nFormat, nSt)));
ScProtectionAttr aAttr;