sc/source/core/opencl/openclwrapper.cxx |   15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

New commits:
commit 5fbc94bc00d04c3af9e519699f91c0fff32df0c3
Author: Julien Nabet <serval2...@yahoo.fr>
Date:   Thu Aug 8 08:19:01 2013 +0200

    Fix some memory leaks
    
    Change-Id: If8c1b341b8493b8902f060d8d13bbb7d08991cd9
    Reviewed-on: https://gerrit.libreoffice.org/5309
    Reviewed-by: Norbert Thiebaud <nthieb...@gmail.com>
    Tested-by: Norbert Thiebaud <nthieb...@gmail.com>

diff --git a/sc/source/core/opencl/openclwrapper.cxx 
b/sc/source/core/opencl/openclwrapper.cxx
index bc97217..0557717 100644
--- a/sc/source/core/opencl/openclwrapper.cxx
+++ b/sc/source/core/opencl/openclwrapper.cxx
@@ -307,6 +307,12 @@ int OpenclDevice::GeneratBinFromKernelSource( cl_program 
program, const char * c
             binaries[i] = (char*) malloc( sizeof(char) * binarySizes[i] );
             if ( binaries[i] == NULL )
             {
+                for ( unsigned int j = 0; j < i ; j++)
+                {
+                    if (binaries[j])
+                        free(binaries[j]);
+                }
+                free(binaries);
                 return 0;
             }
         }
@@ -513,12 +519,14 @@ int OpenclDevice::CompileKernelFile( GPUEnv *gpuInfo, 
const char *buildOption )
         b_error |= fseek( fd, 0, SEEK_SET ) < 0;
         if ( b_error )
         {
+            free(mpArryDevsID);
             return 0;
         }
 
         binary = (char*) malloc( length + 2 );
         if ( !binary )
         {
+            free(mpArryDevsID);
             return 0;
         }
 
@@ -531,7 +539,12 @@ int OpenclDevice::CompileKernelFile( GPUEnv *gpuInfo, 
const char *buildOption )
         // grab the handles to all of the devices in the context.
         clStatus = clGetContextInfo( gpuInfo->mpContext, CL_CONTEXT_DEVICES,
                        sizeof( cl_device_id ) * numDevices, mpArryDevsID, NULL 
);
-        CHECK_OPENCL( clStatus, "clGetContextInfo" );
+        if (clStatus != CL_SUCCESS)
+        {
+            fprintf (stderr, "OpenCL error code is %d at " SAL_DETAIL_WHERE " 
when clGetContextInfo .\n", clStatus);
+            free(binary);
+            return 0;
+        }
 
         fprintf(stderr, "Create kernel from binary\n");
         gpuInfo->mpArryPrograms[idx] = clCreateProgramWithBinary( 
gpuInfo->mpContext,numDevices,
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to