summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Behnel <stefan_ml@behnel.de>2020-05-02 07:05:24 +0200
committerStefan Behnel <stefan_ml@behnel.de>2020-05-02 07:05:24 +0200
commitf3394797b4b925e1292f7950a77ff07e9a525ea6 (patch)
treec1e23a0e2e1ec4e8d4c3c332d00b759683e1952b
parentc10d651201984e3451d5d0a3e24e84aaec515297 (diff)
downloadcython-f3394797b4b925e1292f7950a77ff07e9a525ea6.tar.gz
Avoid useless resorting to char* in nogil code in MemoryView.pyx for raising exceptions, since constant Python strings are just fine there.
-rw-r--r--Cython/Utility/MemoryView.pyx18
1 files changed, 10 insertions, 8 deletions
diff --git a/Cython/Utility/MemoryView.pyx b/Cython/Utility/MemoryView.pyx
index bfefeb2ec..0b5fb04e0 100644
--- a/Cython/Utility/MemoryView.pyx
+++ b/Cython/Utility/MemoryView.pyx
@@ -1220,7 +1220,7 @@ cdef void *copy_data_to_temp({{memviewslice_name}} *src,
result = malloc(size)
if not result:
- _err(PyExc_MemoryError, NULL)
+ _err_no_memory()
# tmpslice[0] = src
tmpslice.data = <char *> result
@@ -1252,15 +1252,17 @@ cdef int _err_extents(int i, Py_ssize_t extent1,
raise ValueError(f"got differing extents in dimension {i} (got {extent1} and {extent2})")
@cname('__pyx_memoryview_err_dim')
-cdef int _err_dim(PyObject *error, char *msg, int dim) except -1 with gil:
- raise (<object>error)(msg.decode('ascii') % dim)
+cdef int _err_dim(PyObject *error, str msg, int dim) except -1 with gil:
+ raise (<object>error)(msg % dim)
@cname('__pyx_memoryview_err')
-cdef int _err(PyObject *error, char *msg) except -1 with gil:
- if msg != NULL:
- raise (<object>error)(msg.decode('ascii'))
- else:
- raise (<object>error)
+cdef int _err(PyObject *error, str msg) except -1 with gil:
+ raise (<object>error)(msg)
+
+@cname('__pyx_memoryview_err_no_memory')
+cdef int _err_no_memory() except -1 with gil:
+ raise MemoryError
+
@cname('__pyx_memoryview_copy_contents')
cdef int memoryview_copy_contents({{memviewslice_name}} src,