]> granicus.if.org Git - python/commitdiff
Use PyObject_CheckReadBuffer().
authorJeremy Hylton <jeremy@alum.mit.edu>
Fri, 9 Nov 2001 22:02:48 +0000 (22:02 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Fri, 9 Nov 2001 22:02:48 +0000 (22:02 +0000)
Modules/newmodule.c
Python/compile.c
Python/marshal.c

index 9a9cbf16855070b157993714d7103d5d26d46b76..6c29fe431500bf4c728d70beef8f505bbfaa01f0 100644 (file)
@@ -153,12 +153,7 @@ new_code(PyObject* unused, PyObject* args)
                Py_DECREF(empty);
        }
 
-       pb = code->ob_type->tp_as_buffer;
-       if (pb == NULL ||
-           pb->bf_getreadbuffer == NULL ||
-           pb->bf_getsegcount == NULL ||
-           (*pb->bf_getsegcount)(code, NULL) != 1)
-       {
+       if (!PyObject_CheckReadBuffer(code)) {
                PyErr_SetString(PyExc_TypeError,
                  "bytecode object must be a single-segment read-only buffer");
                return NULL;
index 1a46064dd47b6549ba2d04c86557eb8e747bc58b..b477513dc1fd05df42a0cea92de6eaa6d5af8261 100644 (file)
@@ -268,7 +268,6 @@ PyCode_New(int argcount, int nlocals, int stacksize, int flags,
 {
        PyCodeObject *co;
        int i;
-       PyBufferProcs *pb;
        /* Check argument types */
        if (argcount < 0 || nlocals < 0 ||
            code == NULL ||
@@ -279,16 +278,8 @@ PyCode_New(int argcount, int nlocals, int stacksize, int flags,
            cellvars == NULL || !PyTuple_Check(cellvars) ||
            name == NULL || !PyString_Check(name) ||
            filename == NULL || !PyString_Check(filename) ||
-               lnotab == NULL || !PyString_Check(lnotab)) {
-               PyErr_BadInternalCall();
-               return NULL;
-       }
-       pb = code->ob_type->tp_as_buffer;
-       if (pb == NULL ||
-           pb->bf_getreadbuffer == NULL ||
-           pb->bf_getsegcount == NULL ||
-           (*pb->bf_getsegcount)(code, NULL) != 1)
-       {
+           lnotab == NULL || !PyString_Check(lnotab) ||
+           !PyObject_CheckReadBuffer(code)) {
                PyErr_BadInternalCall();
                return NULL;
        }
index 806b91c71d4402767e0874888691447b330b4f24..0d21e847b770b9227a1a4dc77f497d85d8bd2eb1 100644 (file)
@@ -108,7 +108,6 @@ static void
 w_object(PyObject *v, WFILE *p)
 {
        int i, n;
-       PyBufferProcs *pb;
 
        p->depth++;
 
@@ -249,13 +248,10 @@ w_object(PyObject *v, WFILE *p)
                w_short(co->co_firstlineno, p);
                w_object(co->co_lnotab, p);
        }
-       else if ((pb = v->ob_type->tp_as_buffer) != NULL &&
-                pb->bf_getsegcount != NULL &&
-                pb->bf_getreadbuffer != NULL &&
-                (*pb->bf_getsegcount)(v, NULL) == 1)
-       {
+       else if (PyObject_CheckReadBuffer(v)) {
                /* Write unknown buffer-style objects as a string */
                char *s;
+               PyBufferProcs *pb = v->ob_type->tp_as_buffer;
                w_byte(TYPE_STRING, p);
                n = (*pb->bf_getreadbuffer)(v, 0, (void **)&s);
                w_long((long)n, p);