[Libreoffice-commits] core.git: extensions/source

Takeshi Abe tabe at fixedpoint.jp
Fri Apr 4 05:21:17 PDT 2014


 extensions/source/plugin/base/nfuncs.cxx |   16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

New commits:
commit 4da62012fea1796c1fed5bb2d87a353d1be79ea5
Author: Takeshi Abe <tabe at fixedpoint.jp>
Date:   Thu Apr 3 13:28:47 2014 +0900

    Fix a memory leak by freeing last pBytes
    
    Change-Id: I7d170d704fa8950057698856d12df63992e38381
    Reviewed-on: https://gerrit.libreoffice.org/8822
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/extensions/source/plugin/base/nfuncs.cxx b/extensions/source/plugin/base/nfuncs.cxx
index d56e02a..796a4a1 100644
--- a/extensions/source/plugin/base/nfuncs.cxx
+++ b/extensions/source/plugin/base/nfuncs.cxx
@@ -44,6 +44,7 @@
 
 #include <plugin/impl.hxx>
 #include <vcl/svapp.hxx>
+#include <boost/scoped_array.hpp>
 
 #if OSL_DEBUG_LEVEL > 1
 #include <osl/thread.h>
@@ -425,20 +426,19 @@ extern "C" {
             return NPERR_FILE_NOT_FOUND;
 
         PluginInputStream* pInputStream = (PluginInputStream*)pStream;
-        sal_Int8* pBytes = NULL;
+        boost::scoped_array<sal_Int8> pBytes;
         int   nBytes = 0;
         pPlugin->enterPluginCallback();
         while( rangeList )
         {
             if( pBytes && nBytes < (int)rangeList->length )
-            {
-                delete [] pBytes;
-                pBytes = NULL;
+                pBytes.reset();
+            if( ! pBytes ) {
+                nBytes = rangeList->length;
+                pBytes.reset(new sal_Int8[ nBytes ]);
             }
-            if( ! pBytes )
-                pBytes = new sal_Int8[ nBytes = rangeList->length ];
             int nRead =
-                pInputStream->read( rangeList->offset, pBytes, rangeList->length );
+                pInputStream->read( rangeList->offset, pBytes.get(), rangeList->length );
             int nPos = 0;
             int nNow;
             do
@@ -451,7 +451,7 @@ extern "C" {
                                stream,
                                rangeList->offset + nPos,
                                nNow,
-                               pBytes+nPos );
+                               pBytes.get()+nPos );
                 nPos += nNow;
                 nRead -= nNow;
             } while( nRead > 0 && nNow );


More information about the Libreoffice-commits mailing list