summaryrefslogtreecommitdiffstats
path: root/Modules/_ctypes
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2007-10-08 02:46:15 (GMT)
committerGuido van Rossum <guido@python.org>2007-10-08 02:46:15 (GMT)
commitbae07c9baf3e53164de6f85a18ce747a76b9ffde (patch)
treee0bf84063848730026bea64461fe3920dbe8ecb8 /Modules/_ctypes
parent85c1ba5d742779eec3148377ce6d8d359d318263 (diff)
downloadcpython-bae07c9baf3e53164de6f85a18ce747a76b9ffde.zip
cpython-bae07c9baf3e53164de6f85a18ce747a76b9ffde.tar.gz
cpython-bae07c9baf3e53164de6f85a18ce747a76b9ffde.tar.bz2
Breaking ground for PEP 3137 implementation:
Get rid of buffer(). Use memoryview() in its place where possible. In a few places, do things a bit different, because memoryview() can't slice (yet).
Diffstat (limited to 'Modules/_ctypes')
-rw-r--r--Modules/_ctypes/_ctypes.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c
index e24a328..22f2cb3 100644
--- a/Modules/_ctypes/_ctypes.c
+++ b/Modules/_ctypes/_ctypes.c
@@ -739,18 +739,12 @@ CharArray_set_raw(CDataObject *self, PyObject *value)
{
char *ptr;
Py_ssize_t size;
- int rel = 0;
Py_buffer view;
- if (PyBuffer_Check(value)) {
- if (PyObject_GetBuffer(value, &view, PyBUF_SIMPLE) < 0)
- return -1;
- size = view.len;
- ptr = view.buf;
- rel = 1;
- } else if (-1 == PyString_AsStringAndSize(value, &ptr, &size)) {
+ if (PyObject_GetBuffer(value, &view, PyBUF_SIMPLE) < 0)
return -1;
- }
+ size = view.len;
+ ptr = view.buf;
if (size > self->b_size) {
PyErr_SetString(PyExc_ValueError,
"string too long");
@@ -759,12 +753,10 @@ CharArray_set_raw(CDataObject *self, PyObject *value)
memcpy(self->b_ptr, ptr, size);
- if (rel)
- PyObject_ReleaseBuffer(value, &view);
+ PyObject_ReleaseBuffer(value, &view);
return 0;
fail:
- if (rel)
- PyObject_ReleaseBuffer(value, &view);
+ PyObject_ReleaseBuffer(value, &view);
return -1;
}