Skip to content

Commit 12a601f

Browse files
committed
Fix CID 1393669 (Resource leak)
Signed-off-by: Stefan Weil <[email protected]>
1 parent 1de55c8 commit 12a601f

File tree

1 file changed

+5
-11
lines changed

1 file changed

+5
-11
lines changed

src/opencl/openclwrapper.cpp

+5-11
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424

2525
#if ON_APPLE
2626
#include <mach/mach_time.h>
27-
#include <cstdio>
2827
#endif
2928

3029
#ifdef USE_OPENCL
@@ -34,6 +33,7 @@
3433

3534
#include "errcode.h" // for ASSERT_HOST
3635
#include "opencl_device_selection.h"
36+
3737
GPUEnv OpenclDevice::gpuEnv;
3838

3939
bool OpenclDevice::deviceIsSelected = false;
@@ -915,7 +915,7 @@ int OpenclDevice::GeneratBinFromKernelSource( cl_program program, const char * c
915915
size_t *binarySizes;
916916
cl_uint numDevices;
917917
cl_device_id *mpArryDevsID;
918-
char **binaries, *str = nullptr;
918+
char *str = nullptr;
919919

920920
clStatus = clGetProgramInfo(program, CL_PROGRAM_NUM_DEVICES,
921921
sizeof(numDevices), &numDevices, nullptr);
@@ -940,10 +940,7 @@ int OpenclDevice::GeneratBinFromKernelSource( cl_program program, const char * c
940940
CHECK_OPENCL( clStatus, "clGetProgramInfo" );
941941

942942
/* copy over all of the generated binaries. */
943-
binaries = (char**) malloc( sizeof(char *) * numDevices );
944-
if (binaries == nullptr) {
945-
return 0;
946-
}
943+
std::vector<char*> binaries(numDevices);
947944

948945
for ( i = 0; i < numDevices; i++ )
949946
{
@@ -961,7 +958,8 @@ int OpenclDevice::GeneratBinFromKernelSource( cl_program program, const char * c
961958
}
962959

963960
clStatus = clGetProgramInfo(program, CL_PROGRAM_BINARIES,
964-
sizeof(char *) * numDevices, binaries, nullptr);
961+
sizeof(char *) * numDevices,
962+
&binaries[0], nullptr);
965963
CHECK_OPENCL(clStatus,"clGetProgramInfo");
966964

967965
/* dump out each binary into its own separate file. */
@@ -994,12 +992,8 @@ int OpenclDevice::GeneratBinFromKernelSource( cl_program program, const char * c
994992
for ( i = 0; i < numDevices; i++ )
995993
{
996994
free(binaries[i]);
997-
binaries[i] = nullptr;
998995
}
999996

1000-
free(binaries);
1001-
binaries = nullptr;
1002-
1003997
free(binarySizes);
1004998
binarySizes = nullptr;
1005999

0 commit comments

Comments
 (0)