[Libreoffice-commits] core.git: filter/source forms/source

Takeshi Abe tabe at fixedpoint.jp
Mon Apr 14 05:48:26 PDT 2014


 filter/source/xsltfilter/LibXSLTTransformer.cxx |    7 ++++---
 filter/source/xsltfilter/OleHandler.cxx         |    9 +++++----
 forms/source/component/EventThread.cxx          |    8 +++-----
 forms/source/richtext/richtextengine.cxx        |    5 ++---
 4 files changed, 14 insertions(+), 15 deletions(-)

New commits:
commit fbf5599c071c6f3203f8992aba4560be9b3b5e42
Author: Takeshi Abe <tabe at fixedpoint.jp>
Date:   Mon Apr 14 21:28:02 2014 +0900

    Avoid possible memory leaks in case of exceptions
    
    Change-Id: Id71cb49d8aa241a17efd4cbe217a48f2d7c34e84

diff --git a/filter/source/xsltfilter/LibXSLTTransformer.cxx b/filter/source/xsltfilter/LibXSLTTransformer.cxx
index 949f383..82ac99f 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 4610f76..1515174 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++) {
diff --git a/forms/source/component/EventThread.cxx b/forms/source/component/EventThread.cxx
index 6a5b0a6..d385ee8 100644
--- a/forms/source/component/EventThread.cxx
+++ b/forms/source/component/EventThread.cxx
@@ -20,7 +20,7 @@
 #include "EventThread.hxx"
 #include <comphelper/guarding.hxx>
 #include <tools/debug.hxx>
-
+#include <boost/scoped_ptr.hpp>
 
 namespace frm
 {
@@ -176,7 +176,7 @@ void OComponentEventThread::run()
             ::cppu::OComponentHelper *pCompImpl = m_pCompImpl;
 
             ThreadEvents::iterator firstEvent( m_aEvents.begin() );
-            EventObject* pEvt = *firstEvent;
+            boost::scoped_ptr<EventObject> pEvt(*firstEvent);
             m_aEvents.erase( firstEvent );
 
             ThreadObjects::iterator firstControl( m_aControls.begin() );
@@ -196,10 +196,8 @@ void OComponentEventThread::run()
                     query_interface(xControlAdapter->queryAdapted(), xControl);
 
                 if( xComp.is() )
-                    processEvent( pCompImpl, pEvt, xControl, bFlag );
+                    processEvent( pCompImpl, pEvt.get(), xControl, bFlag );
             }
-
-            delete pEvt;
         };
 
         // After a Dispose, we do not know the Control anymore.
diff --git a/forms/source/richtext/richtextengine.cxx b/forms/source/richtext/richtextengine.cxx
index 4712a61..1a1cb0c 100644
--- a/forms/source/richtext/richtextengine.cxx
+++ b/forms/source/richtext/richtextengine.cxx
@@ -35,7 +35,7 @@
 
 #include <algorithm>
 #include <functional>
-
+#include <boost/scoped_ptr.hpp>
 
 namespace frm
 {
@@ -85,14 +85,13 @@ namespace frm
         RichTextEngine* pClone( NULL );
         {
             SolarMutexGuard aGuard;
-            EditTextObject* pMyText = CreateTextObject();
+            boost::scoped_ptr<EditTextObject> pMyText(CreateTextObject());
             OSL_ENSURE( pMyText, "RichTextEngine::Clone: CreateTextObject returned nonsense!" );
 
             pClone = Create();
 
             if ( pMyText )
                 pClone->SetText( *pMyText );
-            delete pMyText;
         }
 
         return pClone;


More information about the Libreoffice-commits mailing list