diff options
author | Guido van Rossum <guido@python.org> | 2007-10-08 02:46:15 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2007-10-08 02:46:15 (GMT) |
commit | bae07c9baf3e53164de6f85a18ce747a76b9ffde (patch) | |
tree | e0bf84063848730026bea64461fe3920dbe8ecb8 /Modules/_ctypes | |
parent | 85c1ba5d742779eec3148377ce6d8d359d318263 (diff) | |
download | cpython-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.c | 18 |
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; } |