diff options
author | Raymond Hettinger <python@rcn.com> | 2007-04-02 22:54:21 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2007-04-02 22:54:21 (GMT) |
commit | 01a807db2a4b2d39d8e9473e658b908ff58e1058 (patch) | |
tree | 777212f03785c3a13bb9a353f714a468b397e42f /Modules | |
parent | e6e660bde384b21ee41a5b9f6dbbd2bc1bb2ae6b (diff) | |
download | cpython-01a807db2a4b2d39d8e9473e658b908ff58e1058.zip cpython-01a807db2a4b2d39d8e9473e658b908ff58e1058.tar.gz cpython-01a807db2a4b2d39d8e9473e658b908ff58e1058.tar.bz2 |
Array module's buffer interface can now handle empty arrays.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/arraymodule.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c index 0aeb64e..3ba5cf8 100644 --- a/Modules/arraymodule.c +++ b/Modules/arraymodule.c @@ -1745,6 +1745,8 @@ static PyMappingMethods array_as_mapping = { (objobjargproc)array_ass_subscr }; +static const void *emptybuf = ""; + static Py_ssize_t array_buffer_getreadbuf(arrayobject *self, Py_ssize_t index, const void **ptr) { @@ -1754,6 +1756,8 @@ array_buffer_getreadbuf(arrayobject *self, Py_ssize_t index, const void **ptr) return -1; } *ptr = (void *)self->ob_item; + if (*ptr == NULL) + *ptr = emptybuf; return self->ob_size*self->ob_descr->itemsize; } @@ -1766,6 +1770,8 @@ array_buffer_getwritebuf(arrayobject *self, Py_ssize_t index, const void **ptr) return -1; } *ptr = (void *)self->ob_item; + if (*ptr == NULL) + *ptr = emptybuf; return self->ob_size*self->ob_descr->itemsize; } |