diff options
-rw-r--r-- | Objects/bufferobject.c | 9 | ||||
-rw-r--r-- | Objects/object.c | 4 |
2 files changed, 9 insertions, 4 deletions
diff --git a/Objects/bufferobject.c b/Objects/bufferobject.c index 67d26a1..91f58c9 100644 --- a/Objects/bufferobject.c +++ b/Objects/bufferobject.c @@ -141,6 +141,7 @@ PyBuffer_FromReadWriteMemory(void *ptr, int size) PyObject * PyBuffer_New(int size) { + PyObject *o; PyBufferObject * b; if (size < 0) { @@ -149,10 +150,10 @@ PyBuffer_New(int size) return NULL; } /* PyObject_New is inlined */ - b = (PyBufferObject *) PyObject_MALLOC(sizeof(*b) + size); - if ( b == NULL ) + o = PyObject_MALLOC(sizeof(*b) + size); + if ( o == NULL ) return PyErr_NoMemory(); - PyObject_INIT((PyObject *)b, &PyBuffer_Type); + b = (PyBufferObject *) PyObject_INIT(o, &PyBuffer_Type); b->b_base = NULL; b->b_ptr = (void *)(b + 1); @@ -162,7 +163,7 @@ PyBuffer_New(int size) b->b_hash = -1; #endif - return (PyObject *) b; + return o; } /* Methods */ diff --git a/Objects/object.c b/Objects/object.c index 72c3013..a7df526 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -1123,6 +1123,10 @@ _PyTrash_deposit_object(PyObject *op) typecode = Py_TRASHCAN_FRAME; else if (PyTraceBack_Check(op)) typecode = Py_TRASHCAN_TRACEBACK; + else /* We have a bug here -- those are the only types in GC */ { + Py_FatalError("Type not supported in GC -- internal bug"); + return; /* pacify compiler -- execution never here */ + } op->ob_refcnt = typecode; op->ob_type = (PyTypeObject*)_PyTrash_delete_later; |