static void Struct_tp_dealloc(PyObject *self) { PyObject *et, *ev, *etb, *key; dbus_py_variant_level_clear(self); PyErr_Fetch(&et, &ev, &etb); key = PyLong_FromVoidPtr(self); if (key) { if (PyDict_GetItem(struct_signatures, key)) { if (PyDict_DelItem(struct_signatures, key) < 0) { /* should never happen */ PyErr_WriteUnraisable(self); } } Py_CLEAR(key); } else { /* not enough memory to free all the memory... leak the signature, * there's not much else we could do here */ PyErr_WriteUnraisable(self); } PyErr_Restore(et, ev, etb); (PyTuple_Type.tp_dealloc)(self); }
static void DBusPyLongBase_tp_dealloc(PyObject *self) { dbus_py_variant_level_clear(self); (PyLong_Type.tp_dealloc)(self); }
static void DBusPyStrBase_tp_dealloc(PyObject *self) { dbus_py_variant_level_clear(self); (NATIVESTR_TYPE.tp_dealloc)(self); }