return (PyObject *)newfunc;
}
-static int
-func_clear(PyFunctionObject *op)
-{
- Py_CLEAR(op->func_code);
- Py_CLEAR(op->func_globals);
- Py_CLEAR(op->func_module);
- Py_CLEAR(op->func_name);
- Py_CLEAR(op->func_defaults);
- Py_CLEAR(op->func_kwdefaults);
- Py_CLEAR(op->func_doc);
- Py_CLEAR(op->func_dict);
- Py_CLEAR(op->func_closure);
- Py_CLEAR(op->func_annotations);
- Py_CLEAR(op->func_qualname);
- return 0;
-}
-
static void
func_dealloc(PyFunctionObject *op)
{
_PyObject_GC_UNTRACK(op);
- if (op->func_weakreflist != NULL) {
+ if (op->func_weakreflist != NULL)
PyObject_ClearWeakRefs((PyObject *) op);
- }
- (void)func_clear(op);
+ Py_DECREF(op->func_code);
+ Py_DECREF(op->func_globals);
+ Py_XDECREF(op->func_module);
+ Py_DECREF(op->func_name);
+ Py_XDECREF(op->func_defaults);
+ Py_XDECREF(op->func_kwdefaults);
+ Py_XDECREF(op->func_doc);
+ Py_XDECREF(op->func_dict);
+ Py_XDECREF(op->func_closure);
+ Py_XDECREF(op->func_annotations);
+ Py_XDECREF(op->func_qualname);
PyObject_GC_Del(op);
}
Py_TPFLAGS_METHOD_DESCRIPTOR, /* tp_flags */
func_new__doc__, /* tp_doc */
(traverseproc)func_traverse, /* tp_traverse */
- (inquiry)func_clear, /* tp_clear */
+ 0, /* tp_clear */
0, /* tp_richcompare */
offsetof(PyFunctionObject, func_weakreflist), /* tp_weaklistoffset */
0, /* tp_iter */