diff --git a/src/wrapper/wrap_cl.hpp b/src/wrapper/wrap_cl.hpp index ea1cea822cf3efaf2ff8ed73f5febb8db3fed7a0..4be614a0c427a75c34cb8b927476472874012eb3 100644 --- a/src/wrapper/wrap_cl.hpp +++ b/src/wrapper/wrap_cl.hpp @@ -1725,7 +1725,13 @@ namespace pyopencl PYOPENCL_CALL_GUARDED(clGetMemObjectInfo, (data(), CL_MEM_FLAGS, sizeof(my_flags), &my_flags, 0)); - return get_sub_region(start, end, my_flags); + flags &= ^CL_MEM_COPY_HOST_PTR; + + if (end <= start) + throw pyopencl::error("Buffer.__getitem__", CL_INVALID_VALUE, + "Buffer slice have end > start"); + + return get_sub_region(start, end-start, my_flags); } #endif };