[Python-checkins] python/dist/src/Objects bufferobject.c,2.24,2.25
nascheme at users.sourceforge.net
nascheme at users.sourceforge.net
Fri Sep 24 17:41:29 CEST 2004
Update of /cvsroot/python/python/dist/src/Objects
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3359/Objects
Modified Files:
bufferobject.c
Log Message:
Fix buffer offset calculation (need to compute it before changing
'base'). Fixes SF bug #1033720. Move offset sanity checking to
buffer_from_memory().
Index: bufferobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/bufferobject.c,v
retrieving revision 2.24
retrieving revision 2.25
diff -u -d -r2.24 -r2.25
--- bufferobject.c 25 Mar 2004 16:16:28 -0000 2.24
+++ bufferobject.c 24 Sep 2004 15:41:27 -0000 2.25
@@ -66,6 +66,11 @@
"size must be zero or positive");
return NULL;
}
+ if (offset < 0) {
+ PyErr_SetString(PyExc_ValueError,
+ "offset must be zero or positive");
+ return NULL;
+ }
b = PyObject_NEW(PyBufferObject, &PyBuffer_Type);
if ( b == NULL )
@@ -85,20 +90,11 @@
static PyObject *
buffer_from_object(PyObject *base, int size, int offset, int readonly)
{
- if ( offset < 0 ) {
- PyErr_SetString(PyExc_ValueError,
- "offset must be zero or positive");
- return NULL;
- }
-
- /* if the base object is another buffer, then try to refer to the
- * base object.
- */
if ( PyBuffer_Check(base) && (((PyBufferObject *)base)->b_base) ) {
+ /* another buffer, refer to the base object */
+ offset += ((PyBufferObject *)base)->b_offset;
base = ((PyBufferObject *)base)->b_base;
- offset = ((PyBufferObject *)base)->b_offset + offset;
}
-
return buffer_from_memory(base, size, offset, NULL, readonly);
}
More information about the Python-checkins
mailing list