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 mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev