/* Extract the type; we expect it to be a heap type */
type = Py_TYPE(self);
- assert(type->tp_flags & Py_TPFLAGS_HEAPTYPE);
+ _PyObject_ASSERT((PyObject *)type, type->tp_flags & Py_TPFLAGS_HEAPTYPE);
/* Test whether the type has GC exactly once */
{
PyObject **weaklistptr;
PyObject *result;
+ PyTypeObject *type = Py_TYPE(obj);
- if (Py_TYPE(obj)->tp_weaklistoffset == 0) {
+ if (type->tp_weaklistoffset == 0) {
PyErr_SetString(PyExc_AttributeError,
"This object has no __weakref__");
return NULL;
}
- assert(Py_TYPE(obj)->tp_weaklistoffset > 0);
- assert(Py_TYPE(obj)->tp_weaklistoffset + sizeof(PyObject *) <=
- (size_t)(Py_TYPE(obj)->tp_basicsize));
- weaklistptr = (PyObject **)
- ((char *)obj + Py_TYPE(obj)->tp_weaklistoffset);
+ _PyObject_ASSERT((PyObject *)type,
+ type->tp_weaklistoffset > 0);
+ _PyObject_ASSERT((PyObject *)type,
+ ((type->tp_weaklistoffset + sizeof(PyObject *))
+ <= (size_t)(type->tp_basicsize)));
+ weaklistptr = (PyObject **)((char *)obj + type->tp_weaklistoffset);
if (*weaklistptr == NULL)
result = Py_None;
else
PyObject *tp, *val, *tb;
/* Assert this is a heap-allocated type object */
- assert(type->tp_flags & Py_TPFLAGS_HEAPTYPE);
+ _PyObject_ASSERT((PyObject *)type, type->tp_flags & Py_TPFLAGS_HEAPTYPE);
_PyObject_GC_UNTRACK(type);
PyErr_Fetch(&tp, &val, &tb);
remove_all_subclasses(type, type->tp_bases);
PyDictKeysObject *cached_keys;
/* Because of type_is_gc(), the collector only calls this
for heaptypes. */
- assert(type->tp_flags & Py_TPFLAGS_HEAPTYPE);
+ _PyObject_ASSERT((PyObject *)type, type->tp_flags & Py_TPFLAGS_HEAPTYPE);
/* We need to invalidate the method cache carefully before clearing
the dict, so that other objects caught in a reference cycle
assert(_PyType_CheckConsistency(type));
return 0;
}
- assert((type->tp_flags & Py_TPFLAGS_READYING) == 0);
+ _PyObject_ASSERT((PyObject *)type,
+ (type->tp_flags & Py_TPFLAGS_READYING) == 0);
type->tp_flags |= Py_TPFLAGS_READYING;