diff options
author | Dag Lem <dag@nimrod.no> | 2013-05-22 21:02:20 +0200 |
---|---|---|
committer | Zhigang Gong <zhigang.gong@linux.intel.com> | 2013-05-23 10:33:59 +0800 |
commit | d48da87b3de276592397cc0d31f68816098bc4d2 (patch) | |
tree | 8e65a1a01aafb7e4f36d5ae6429ce49c23d4b331 /src | |
parent | a06b761c890bf55711c6f11b890751c653f8f027 (diff) |
Fix several CL error code return bugs
Signed-off-by: Dag Lem <dag@nimrod.no>
Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/cl_api.c | 42 | ||||
-rw-r--r-- | src/cl_context.c | 1 |
2 files changed, 23 insertions, 20 deletions
diff --git a/src/cl_api.c b/src/cl_api.c index a4e534a3..f3782969 100644 --- a/src/cl_api.c +++ b/src/cl_api.c @@ -135,9 +135,10 @@ clCreateContextFromType(const cl_context_properties * properties, void * user_data, cl_int * errcode_ret) { + cl_context context = NULL; + cl_int err = CL_SUCCESS; cl_device_id devices[1]; cl_uint num_devices = 1; - cl_int err; err = cl_get_device_ids(NULL, device_type, @@ -145,16 +146,19 @@ clCreateContextFromType(const cl_context_properties * properties, &devices[0], &num_devices); if (err != CL_SUCCESS) { - *errcode_ret = err; - return NULL; + goto error; } - return cl_create_context(properties, - num_devices, - devices, - pfn_notify, - user_data, - errcode_ret); + context = cl_create_context(properties, + num_devices, + devices, + pfn_notify, + user_data, + &err); +error: + if (errcode_ret) + *errcode_ret = err; + return context; } cl_int @@ -214,9 +218,11 @@ clCreateCommandQueue(cl_context context, cl_command_queue queue = NULL; cl_int err = CL_SUCCESS; CHECK_CONTEXT (context); - queue = cl_context_create_queue(context, device, properties, errcode_ret); + queue = cl_context_create_queue(context, device, properties, &err); error: - return err == CL_SUCCESS ? queue : NULL; + if (errcode_ret) + *errcode_ret = err; + return queue; } cl_int @@ -349,7 +355,7 @@ clCreateImage2D(cl_context context, image_format, &image_desc, host_ptr, - errcode_ret); + &err); error: if (errcode_ret) *errcode_ret = err; @@ -385,7 +391,7 @@ clCreateImage3D(cl_context context, image_format, &image_desc, host_ptr, - errcode_ret); + &err); error: if (errcode_ret) *errcode_ret = err; @@ -668,14 +674,12 @@ clCreateKernel(cl_program program, err = CL_INVALID_PROGRAM_EXECUTABLE; goto error; } - kernel = cl_program_create_kernel(program, kernel_name, errcode_ret); + kernel = cl_program_create_kernel(program, kernel_name, &err); -exit: - return kernel; error: if (errcode_ret) *errcode_ret = err; - goto exit; + return kernel; } cl_int @@ -835,10 +839,8 @@ clFinish(cl_command_queue command_queue) CHECK_QUEUE (command_queue); err = cl_command_queue_finish(command_queue); -exit: - return err; error: - goto exit; + return err; } cl_int diff --git a/src/cl_context.c b/src/cl_context.c index 4a1925c3..fc75d620 100644 --- a/src/cl_context.c +++ b/src/cl_context.c @@ -225,6 +225,7 @@ exit: return queue; error: cl_command_queue_delete(queue); + queue = NULL; goto exit; } |