extensions/source/plugin/base/nfuncs.cxx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
New commits: commit 4da62012fea1796c1fed5bb2d87a353d1be79ea5 Author: Takeshi Abe <t...@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 <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@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 );
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits