Issue #20437: Fixed 21 potential bugs when deleting objects references.
diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c
index ec3f91b..123df8c 100644
--- a/Objects/tupleobject.c
+++ b/Objects/tupleobject.c
@@ -866,8 +866,7 @@
_Py_ForgetReference((PyObject *) v);
/* DECREF items deleted by shrinkage */
for (i = newsize; i < oldsize; i++) {
- Py_XDECREF(v->ob_item[i]);
- v->ob_item[i] = NULL;
+ Py_CLEAR(v->ob_item[i]);
}
sv = PyObject_GC_Resize(PyTupleObject, v, newsize);
if (sv == NULL) {
@@ -913,8 +912,7 @@
#if PyTuple_MAXSAVESIZE > 0
/* empty tuples are used all over the place and applications may
* rely on the fact that an empty tuple is a singleton. */
- Py_XDECREF(free_list[0]);
- free_list[0] = NULL;
+ Py_CLEAR(free_list[0]);
(void)PyTuple_ClearFreeList();
#endif