@@ -570,31 +570,23 @@ func_new_impl(PyTypeObject *type, PyCodeObject *code, PyObject *globals,
570
570
return (PyObject * )newfunc ;
571
571
}
572
572
573
- static int
574
- func_clear (PyFunctionObject * op )
575
- {
576
- Py_CLEAR (op -> func_code );
577
- Py_CLEAR (op -> func_globals );
578
- Py_CLEAR (op -> func_module );
579
- Py_CLEAR (op -> func_name );
580
- Py_CLEAR (op -> func_defaults );
581
- Py_CLEAR (op -> func_kwdefaults );
582
- Py_CLEAR (op -> func_doc );
583
- Py_CLEAR (op -> func_dict );
584
- Py_CLEAR (op -> func_closure );
585
- Py_CLEAR (op -> func_annotations );
586
- Py_CLEAR (op -> func_qualname );
587
- return 0 ;
588
- }
589
-
590
573
static void
591
574
func_dealloc (PyFunctionObject * op )
592
575
{
593
576
_PyObject_GC_UNTRACK (op );
594
- if (op -> func_weakreflist != NULL ) {
577
+ if (op -> func_weakreflist != NULL )
595
578
PyObject_ClearWeakRefs ((PyObject * ) op );
596
- }
597
- (void )func_clear (op );
579
+ Py_DECREF (op -> func_code );
580
+ Py_DECREF (op -> func_globals );
581
+ Py_XDECREF (op -> func_module );
582
+ Py_DECREF (op -> func_name );
583
+ Py_XDECREF (op -> func_defaults );
584
+ Py_XDECREF (op -> func_kwdefaults );
585
+ Py_XDECREF (op -> func_doc );
586
+ Py_XDECREF (op -> func_dict );
587
+ Py_XDECREF (op -> func_closure );
588
+ Py_XDECREF (op -> func_annotations );
589
+ Py_XDECREF (op -> func_qualname );
598
590
PyObject_GC_Del (op );
599
591
}
600
592
@@ -669,7 +661,7 @@ PyTypeObject PyFunction_Type = {
669
661
Py_TPFLAGS_METHOD_DESCRIPTOR , /* tp_flags */
670
662
func_new__doc__ , /* tp_doc */
671
663
(traverseproc )func_traverse , /* tp_traverse */
672
- ( inquiry ) func_clear , /* tp_clear */
664
+ 0 , /* tp_clear */
673
665
0 , /* tp_richcompare */
674
666
offsetof(PyFunctionObject , func_weakreflist ), /* tp_weaklistoffset */
675
667
0 , /* tp_iter */
0 commit comments