From 3900088cb6d70769c7905ea0afa8b6f161186fde Mon Sep 17 00:00:00 2001 From: "Travis E. Oliphant" Date: Fri, 6 Jun 2008 20:52:38 +0000 Subject: [PATCH] Remove locking from buffer protocol as-per discussion. --- Include/object.h | 11 ----------- Modules/_bsddb.c | 6 ------ Modules/_ctypes/_ctypes.c | 5 ----- Modules/arraymodule.c | 5 ----- Objects/abstract.c | 6 ------ Objects/memoryobject.c | 3 --- 6 files changed, 36 deletions(-) diff --git a/Include/object.h b/Include/object.h index 62c4961380a..e924131b61f 100644 --- a/Include/object.h +++ b/Include/object.h @@ -163,7 +163,6 @@ typedef void (*releasebufferproc)(PyObject *, Py_buffer *); #define PyBUF_WRITABLE 0x0001 /* we used to include an E, backwards compatible alias */ #define PyBUF_WRITEABLE PyBUF_WRITABLE -#define PyBUF_LOCK 0x0002 #define PyBUF_FORMAT 0x0004 #define PyBUF_ND 0x0008 #define PyBUF_STRIDES (0x0010 | PyBUF_ND) @@ -174,25 +173,15 @@ typedef void (*releasebufferproc)(PyObject *, Py_buffer *); #define PyBUF_CONTIG (PyBUF_ND | PyBUF_WRITABLE) #define PyBUF_CONTIG_RO (PyBUF_ND) -#define PyBUF_CONTIG_LCK (PyBUF_ND | PyBUF_LOCK) -#define PyBUF_CONTIG_XLCK (PyBUF_ND | PyBUF_LOCK | PyBUF_WRITABLE) #define PyBUF_STRIDED (PyBUF_STRIDES | PyBUF_WRITABLE) #define PyBUF_STRIDED_RO (PyBUF_STRIDES) -#define PyBUF_STRIDED_LCK (PyBUF_STRIDES | PyBUF_LOCK) -#define PyBUF_STRIDED_XLCK (PyBUF_STRIDES | PyBUF_LOCK | PyBUF_WRITABLE) #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_WRITABLE | PyBUF_FORMAT) #define PyBUF_RECORDS_RO (PyBUF_STRIDES | PyBUF_FORMAT) -#define PyBUF_RECORDS_LCK (PyBUF_STRIDES | PyBUF_LOCK | PyBUF_FORMAT) -#define PyBUF_RECORDS_XLCK (PyBUF_STRIDES | PyBUF_LOCK | PyBUF_WRITABLE \ - | PyBUF_FORMAT) #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_WRITABLE | PyBUF_FORMAT) #define PyBUF_FULL_RO (PyBUF_INDIRECT | PyBUF_FORMAT) -#define PyBUF_FULL_LCK (PyBUF_INDIRECT | PyBUF_LOCK | PyBUF_FORMAT) -#define PyBUF_FULL_XLCK (PyBUF_INDIRECT | PyBUF_LOCK | PyBUF_WRITABLE \ - | PyBUF_FORMAT) #define PyBUF_READ 0x100 diff --git a/Modules/_bsddb.c b/Modules/_bsddb.c index 04c38356643..3a67a1e600a 100644 --- a/Modules/_bsddb.c +++ b/Modules/_bsddb.c @@ -312,12 +312,6 @@ static Py_buffer * _malloc_view(PyObject *obj) "Py_buffer malloc failed"); return NULL; } - /* We use PyBUF_LOCK to prevent other threads from trashing the data - buffer while we release the GIL. http://bugs.python.org/issue1035 */ - if (PyObject_GetBuffer(obj, view, PyBUF_LOCK) == -1) { - PyMem_Free(view); - return NULL; - } if (view->ndim > 1) { PyErr_SetString(PyExc_BufferError, "buffers must be single dimension"); diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c index fe598d770fe..c840757add8 100644 --- a/Modules/_ctypes/_ctypes.c +++ b/Modules/_ctypes/_ctypes.c @@ -2449,11 +2449,6 @@ static int CData_GetBuffer(PyObject *_self, Py_buffer *view, int flags) Py_ssize_t i; if (view == NULL) return 0; - if (((flags & PyBUF_LOCK) == PyBUF_LOCK)) { - PyErr_SetString(PyExc_BufferError, - "Cannot lock this object."); - return -1; - } view->buf = self->b_ptr; view->len = self->b_size; diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c index a84126d12b3..ea59a426abf 100644 --- a/Modules/arraymodule.c +++ b/Modules/arraymodule.c @@ -1779,11 +1779,6 @@ static const void *emptybuf = ""; static int array_buffer_getbuf(arrayobject *self, Py_buffer *view, int flags) { - if ((flags & PyBUF_LOCK)) { - PyErr_SetString(PyExc_BufferError, - "Cannot lock data"); - return -1; - } if (view==NULL) goto finish; view->buf = (void *)self->ob_item; diff --git a/Objects/abstract.c b/Objects/abstract.c index 11adc772ad8..60a5e849cfd 100644 --- a/Objects/abstract.c +++ b/Objects/abstract.c @@ -672,12 +672,6 @@ PyBuffer_FillInfo(Py_buffer *view, void *buf, Py_ssize_t len, int readonly, int flags) { if (view == NULL) return 0; - if (((flags & PyBUF_LOCK) == PyBUF_LOCK) && - readonly != 0) { - PyErr_SetString(PyExc_BufferError, - "Cannot lock this object."); - return -1; - } if (((flags & PyBUF_WRITABLE) == PyBUF_WRITABLE) && (readonly == 1)) { PyErr_SetString(PyExc_BufferError, diff --git a/Objects/memoryobject.c b/Objects/memoryobject.c index 27ceb7a2e52..9bb16971d6a 100644 --- a/Objects/memoryobject.c +++ b/Objects/memoryobject.c @@ -230,9 +230,6 @@ PyMemoryView_GetContiguous(PyObject *obj, int buffertype, char fort) case PyBUF_WRITE: flags = PyBUF_FULL; break; - case PyBUF_SHADOW: - flags = PyBUF_FULL_XLCK; - break; } if (PyObject_GetBuffer(obj, view, flags) != 0) {