aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSylvain Munaut <tnt@246tNt.com>2014-08-04 23:37:41 +0200
committerSylvain Munaut <tnt@246tNt.com>2014-08-25 21:20:31 +0200
commitdc1104a523e1988a827ab1eb42ec00e647b402f4 (patch)
tree6e53b454f0e0902ea957775c26b35e48a3f18cef
parent9aea19ae1b057b037cae011fd55d167486df301a (diff)
fosphor/cl: Properly set the 'err' variable when cl_load_program fails
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
-rw-r--r--lib/fosphor/cl.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/fosphor/cl.c b/lib/fosphor/cl.c
index 89af105..fea1dd8 100644
--- a/lib/fosphor/cl.c
+++ b/lib/fosphor/cl.c
@@ -308,7 +308,8 @@ error:
static cl_program
cl_load_program(cl_device_id dev_id, cl_context ctx,
- const char *resource_name, const char *opts)
+ const char *resource_name, const char *opts,
+ cl_int *err_ptr)
{
cl_program prog = NULL;
const char *src;
@@ -318,6 +319,7 @@ cl_load_program(cl_device_id dev_id, cl_context ctx,
src = resource_get(resource_name, NULL);
if (!src) {
fprintf(stderr, "[!] Unable to load non-existent resource '%s'\n", resource_name);
+ err = CL_INVALID_VALUE;
goto error;
}
@@ -376,6 +378,9 @@ error:
if (prog)
clReleaseProgram(prog);
+ if (err_ptr)
+ *err_ptr = err;
+
return NULL;
}
@@ -632,7 +637,7 @@ cl_do_init(struct fosphor *self)
CL_ERR_CHECK(err, "Unable to allocate FFT window buffer");
/* FFT program/kernels */
- cl->prog_fft = cl_load_program(cl->dev_id, cl->ctx, "fft.cl", NULL);
+ cl->prog_fft = cl_load_program(cl->dev_id, cl->ctx, "fft.cl", NULL, &err);
if (!cl->prog_fft)
goto error;
@@ -663,7 +668,7 @@ cl_do_init(struct fosphor *self)
else
disp_opts = NULL;
- cl->prog_display = cl_load_program(cl->dev_id, cl->ctx, "display.cl", disp_opts);
+ cl->prog_display = cl_load_program(cl->dev_id, cl->ctx, "display.cl", disp_opts, &err);
if (!cl->prog_display)
goto error;