summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2014-12-25 09:37:43 +0000
committerCaolán McNamara <caolanm@redhat.com>2014-12-26 09:48:14 +0000
commitabbfb33c8107e38470adc73f95ce3ac4a2b26d3b (patch)
tree3c9382609aa5d86a5729ed31f1987b9d5f1a8407
parent71c60f8f8956414034d105fe4cc64c12d3a5d2e3 (diff)
coverity#982280 Resource leak in object
Change-Id: I005ed6f44925df7f380eadc4f9971bc1c030a0ca
-rw-r--r--sc/source/filter/xml/xmlcondformat.cxx25
-rw-r--r--sc/source/filter/xml/xmlcondformat.hxx4
2 files changed, 17 insertions, 12 deletions
diff --git a/sc/source/filter/xml/xmlcondformat.cxx b/sc/source/filter/xml/xmlcondformat.cxx
index 8ddb53751982..ad49a092b031 100644
--- a/sc/source/filter/xml/xmlcondformat.cxx
+++ b/sc/source/filter/xml/xmlcondformat.cxx
@@ -86,8 +86,8 @@ ScXMLConditionalFormatContext::ScXMLConditionalFormatContext( ScXMLImport& rImpo
ScRangeStringConverter::GetRangeListFromString(maRange, sRange, GetScImport().GetDocument(),
formula::FormulaGrammar::CONV_ODF);
- mpFormat = new ScConditionalFormat(0, GetScImport().GetDocument());
- mpFormat->AddRange(maRange);
+ mxFormat.reset(new ScConditionalFormat(0, GetScImport().GetDocument()));
+ mxFormat->AddRange(maRange);
}
SvXMLImportContext* ScXMLConditionalFormatContext::CreateChildContext( sal_uInt16 nPrefix,
@@ -101,19 +101,19 @@ SvXMLImportContext* ScXMLConditionalFormatContext::CreateChildContext( sal_uInt1
switch (nToken)
{
case XML_TOK_CONDFORMAT_CONDITION:
- pContext = new ScXMLCondContext( GetScImport(), nPrefix, rLocalName, xAttrList, mpFormat );
+ pContext = new ScXMLCondContext( GetScImport(), nPrefix, rLocalName, xAttrList, mxFormat.get() );
break;
case XML_TOK_CONDFORMAT_COLORSCALE:
- pContext = new ScXMLColorScaleFormatContext( GetScImport(), nPrefix, rLocalName, mpFormat );
+ pContext = new ScXMLColorScaleFormatContext( GetScImport(), nPrefix, rLocalName, mxFormat.get() );
break;
case XML_TOK_CONDFORMAT_DATABAR:
- pContext = new ScXMLDataBarFormatContext( GetScImport(), nPrefix, rLocalName, xAttrList, mpFormat );
+ pContext = new ScXMLDataBarFormatContext( GetScImport(), nPrefix, rLocalName, xAttrList, mxFormat.get() );
break;
case XML_TOK_CONDFORMAT_ICONSET:
- pContext = new ScXMLIconSetFormatContext( GetScImport(), nPrefix, rLocalName, xAttrList, mpFormat );
+ pContext = new ScXMLIconSetFormatContext( GetScImport(), nPrefix, rLocalName, xAttrList, mxFormat.get() );
break;
case XML_TOK_CONDFORMAT_DATE:
- pContext = new ScXMLDateContext( GetScImport(), nPrefix, rLocalName, xAttrList, mpFormat );
+ pContext = new ScXMLDateContext( GetScImport(), nPrefix, rLocalName, xAttrList, mxFormat.get() );
break;
default:
break;
@@ -127,10 +127,15 @@ void ScXMLConditionalFormatContext::EndElement()
ScDocument* pDoc = GetScImport().GetDocument();
SCTAB nTab = GetScImport().GetTables().GetCurrentSheet();
- sal_uLong nIndex = pDoc->AddCondFormat(mpFormat, nTab);
- mpFormat->SetKey(nIndex);
+ ScConditionalFormat* pFormat = mxFormat.release();
+ sal_uLong nIndex = pDoc->AddCondFormat(pFormat, nTab);
+ pFormat->SetKey(nIndex);
- pDoc->AddCondFormatData( mpFormat->GetRange(), nTab, nIndex);
+ pDoc->AddCondFormatData( pFormat->GetRange(), nTab, nIndex);
+}
+
+ScXMLConditionalFormatContext::~ScXMLConditionalFormatContext()
+{
}
ScXMLColorScaleFormatContext::ScXMLColorScaleFormatContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
diff --git a/sc/source/filter/xml/xmlcondformat.hxx b/sc/source/filter/xml/xmlcondformat.hxx
index 9e2e810ee52f..b209254bd1b3 100644
--- a/sc/source/filter/xml/xmlcondformat.hxx
+++ b/sc/source/filter/xml/xmlcondformat.hxx
@@ -49,7 +49,7 @@ public:
const ::com::sun::star::uno::Reference<
::com::sun::star::xml::sax::XAttributeList>& xAttrList);
- virtual ~ScXMLConditionalFormatContext() {}
+ virtual ~ScXMLConditionalFormatContext();
virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
const OUString& rLocalName,
@@ -59,7 +59,7 @@ public:
virtual void EndElement() SAL_OVERRIDE;
private:
- ScConditionalFormat* mpFormat;
+ std::unique_ptr<ScConditionalFormat> mxFormat;
ScRangeList maRange;
};