summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorTakeshi Abe <tabe@fixedpoint.jp>2014-04-14 21:28:02 +0900
committerTakeshi Abe <tabe@fixedpoint.jp>2014-04-14 21:47:43 +0900
commitfbf5599c071c6f3203f8992aba4560be9b3b5e42 (patch)
treef15465bdebc3b9d424b010ae1afc8960401c875e /filter
parente04c36b4591ffa457f3072ea8d3c0c72211d20c7 (diff)
Avoid possible memory leaks in case of exceptions
Change-Id: Id71cb49d8aa241a17efd4cbe217a48f2d7c34e84
Diffstat (limited to 'filter')
-rw-r--r--filter/source/xsltfilter/LibXSLTTransformer.cxx7
-rw-r--r--filter/source/xsltfilter/OleHandler.cxx9
2 files changed, 9 insertions, 7 deletions
diff --git a/filter/source/xsltfilter/LibXSLTTransformer.cxx b/filter/source/xsltfilter/LibXSLTTransformer.cxx
index 949f383c1f47..82ac99f9e7dd 100644
--- a/filter/source/xsltfilter/LibXSLTTransformer.cxx
+++ b/filter/source/xsltfilter/LibXSLTTransformer.cxx
@@ -47,6 +47,7 @@
#include <LibXSLTTransformer.hxx>
#include <OleHandler.hxx>
+#include <boost/scoped_ptr.hpp>
using namespace ::rtl;
using namespace ::cppu;
@@ -307,11 +308,11 @@ namespace XSLT
xsltSetGenericDebugFunc(stderr, NULL);
xsltDebugDumpExtensions(NULL);
#endif
- OleHandler* oh = new OleHandler(m_transformer->getComponentContext());
+ boost::scoped_ptr<OleHandler> oh(new OleHandler(m_transformer->getComponentContext()));
if (styleSheet)
{
tcontext = xsltNewTransformContext(styleSheet, doc);
- tcontext->_private = static_cast<void *> (oh);
+ tcontext->_private = static_cast<void *> (oh.get());
xsltQuoteUserParams(tcontext, &params[0]);
result = xsltApplyStylesheetUser(styleSheet, doc, 0, 0, 0,
tcontext);
@@ -340,7 +341,7 @@ namespace XSLT
m_transformer->error(msg);
}
closeOutput();
- delete(oh);
+ oh.reset();
xsltFreeStylesheet(styleSheet);
xsltFreeTransformContext(tcontext);
xmlFreeDoc(doc);
diff --git a/filter/source/xsltfilter/OleHandler.cxx b/filter/source/xsltfilter/OleHandler.cxx
index 4610f7628621..151517405652 100644
--- a/filter/source/xsltfilter/OleHandler.cxx
+++ b/filter/source/xsltfilter/OleHandler.cxx
@@ -41,6 +41,7 @@
#include <com/sun/star/embed/XTransactedObject.hpp>
#include <OleHandler.hxx>
+#include <boost/scoped_ptr.hpp>
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::lang;
@@ -128,12 +129,12 @@ namespace XSLT
}
// Decompress the bytes
- ::ZipUtils::Inflater* decompresser = new ::ZipUtils::Inflater(false);
+ boost::scoped_ptr< ::ZipUtils::Inflater> decompresser(new ::ZipUtils::Inflater(false));
decompresser->setInput(content);
Sequence<sal_Int8> result(oleLength);
decompresser->doInflateSegment(result, 0, oleLength);
decompresser->end();
- delete decompresser;
+ decompresser.reset();
//return the base64 string of the uncompressed data
OUStringBuffer buf(oleLength);
::sax::Converter::encodeBase64(buf, result);
@@ -196,11 +197,11 @@ namespace XSLT
// Compress the bytes
Sequence<sal_Int8> output(oledata.getLength());
- ::ZipUtils::Deflater* compresser = new ::ZipUtils::Deflater((sal_Int32) 3, false);
+ boost::scoped_ptr< ::ZipUtils::Deflater> compresser(new ::ZipUtils::Deflater((sal_Int32) 3, false));
compresser->setInputSegment(oledata, 0, oledata.getLength());
compresser->finish();
int compressedDataLength = compresser->doDeflateSegment(output, 0, oledata.getLength());
- delete(compresser);
+ compresser.reset();
//realloc the data length
Sequence<sal_Int8> compressed(compressedDataLength);
for (int i = 0; i < compressedDataLength; i++) {