Mapping can fail, and this should be handled. Return the proper error
code and abort the associated event in this case.
---
src/gallium/state_trackers/clover/api/transfer.cpp | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/src/gallium/state_trackers/clover/api/transfer.cpp
b/src/gallium/state_trackers/clover/api/transfer.cpp
index 4986f53..275059c 100644
--- a/src/gallium/state_trackers/clover/api/transfer.cpp
+++ b/src/gallium/state_trackers/clover/api/transfer.cpp
@@ -699,11 +699,17 @@ clEnqueueMapBuffer(cl_command_queue d_q, cl_mem d_mem,
cl_bool blocking,
map_resource_op(q, &mem, flags, blocking, obj_origin, region, &map));
ret_object(rd_ev, hev);
- ret_error(r_errcode, CL_SUCCESS);
if (blocking)
hev().wait();
+ if (!map) {
+ hev().abort(CL_MAP_FAILURE);
+ ret_error(r_errcode, CL_MAP_FAILURE);
+ return NULL;
+ }
+
+ ret_error(r_errcode, CL_SUCCESS);
return map;
} catch (error &e) {
@@ -734,11 +740,17 @@ clEnqueueMapImage(cl_command_queue d_q, cl_mem d_mem,
cl_bool blocking,
map_resource_op(q, &img, flags, blocking, origin, region, &map));
ret_object(rd_ev, hev);
- ret_error(r_errcode, CL_SUCCESS);
if (blocking)
hev().wait();
+ if (!map) {
+ hev().abort(CL_MAP_FAILURE);
+ ret_error(r_errcode, CL_MAP_FAILURE);
+ return NULL;
+ }
+
+ ret_error(r_errcode, CL_SUCCESS);
return map;
} catch (error &e) {
--
1.9.1
_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev