[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