From 0719d4070417266dea2573f6cf559beff16c62b7 Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sun, 22 Jan 2012 17:09:06 +1100 Subject: [PATCH] Clean up on failure to load a binary kernel. --- ocl.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ocl.c b/ocl.c index 682c3f3b..7ea48a67 100644 --- a/ocl.c +++ b/ocl.c @@ -424,6 +424,9 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize) fclose(binaryfile); goto build; } + if (!binary_stat.st_size) + goto build; + binary_sizes[gpu] = binary_stat.st_size; binaries[gpu] = (char *)malloc(binary_sizes[gpu]); if (unlikely(!binaries[gpu])) { @@ -435,6 +438,7 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize) if (fread(binaries[gpu], 1, binary_sizes[gpu], binaryfile) != binary_sizes[gpu]) { applog(LOG_ERR, "Unable to fread binaries[gpu]"); fclose(binaryfile); + free(binaries[gpu]); goto build; } @@ -442,6 +446,7 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize) if (status != CL_SUCCESS) { applog(LOG_ERR, "Error: Loading Binary into cl_program (clCreateProgramWithBinary)"); fclose(binaryfile); + free(binaries[gpu]); goto build; } fclose(binaryfile);