From 290c00a63ef0aec698501de59c9c7b0cecf636da Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Tue, 21 Aug 2018 01:18:36 -0500 Subject: [PATCH] [pybind] Work around broken any-contiguity detection in pypy --- src/wrap_cl.hpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/wrap_cl.hpp b/src/wrap_cl.hpp index b4d16831..9111fd12 100644 --- a/src/wrap_cl.hpp +++ b/src/wrap_cl.hpp @@ -445,8 +445,22 @@ namespace pyopencl void get(PyObject *obj, int flags) { +#ifdef PYPY_VERSION + // work around https://bitbucket.org/pypy/pypy/issues/2873 + if (flags & PyBUF_ANY_CONTIGUOUS) + { + int flags_wo_cont = flags & ~PyBUF_ANY_CONTIGUOUS; + if (PyObject_GetBuffer(obj, &m_buf, flags_wo_cont | PyBUF_C_CONTIGUOUS)) + { + PyErr_Clear(); + if (PyObject_GetBuffer(obj, &m_buf, flags_wo_cont | PyBUF_F_CONTIGUOUS)) + throw py::error_already_set(); + } + } +#else if (PyObject_GetBuffer(obj, &m_buf, flags)) throw py::error_already_set(); +#endif m_initialized = true; } -- GitLab