Skip to content

Commit 54fa61e

Browse files
committed
call PyObject_ClearWeakRefs unconditionally
1 parent edd4879 commit 54fa61e

30 files changed

+32
-83
lines changed

Modules/_collectionsmodule.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1532,9 +1532,7 @@ deque_dealloc(PyObject *self)
15321532
Py_ssize_t i;
15331533

15341534
PyObject_GC_UnTrack(deque);
1535-
if (deque->weakreflist != NULL) {
1536-
PyObject_ClearWeakRefs(self);
1537-
}
1535+
PyObject_ClearWeakRefs(self);
15381536
if (deque->leftblock != NULL) {
15391537
(void)deque_clear(self);
15401538
assert(deque->leftblock != NULL);

Modules/_elementtree.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -690,8 +690,7 @@ element_dealloc(PyObject *op)
690690
/* bpo-31095: UnTrack is needed before calling any callbacks */
691691
PyObject_GC_UnTrack(self);
692692

693-
if (self->weakreflist != NULL)
694-
PyObject_ClearWeakRefs(op);
693+
PyObject_ClearWeakRefs(op);
695694

696695
/* element_gc_clear clears all references and deallocates extra
697696
*/

Modules/_functoolsmodule.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -351,9 +351,7 @@ partial_dealloc(PyObject *self)
351351
PyTypeObject *tp = Py_TYPE(self);
352352
/* bpo-31095: UnTrack is needed before calling any callbacks */
353353
PyObject_GC_UnTrack(self);
354-
if (partialobject_CAST(self)->weakreflist != NULL) {
355-
PyObject_ClearWeakRefs(self);
356-
}
354+
PyObject_ClearWeakRefs(self);
357355
(void)partial_clear(self);
358356
tp->tp_free(self);
359357
Py_DECREF(tp);
@@ -1621,9 +1619,7 @@ lru_cache_dealloc(PyObject *op)
16211619
PyTypeObject *tp = Py_TYPE(obj);
16221620
/* bpo-31095: UnTrack is needed before calling any callbacks */
16231621
PyObject_GC_UnTrack(obj);
1624-
if (obj->weakreflist != NULL) {
1625-
PyObject_ClearWeakRefs(op);
1626-
}
1622+
PyObject_ClearWeakRefs(op);
16271623

16281624
(void)lru_cache_tp_clear(op);
16291625
tp->tp_free(obj);

Modules/_io/bufferedio.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -421,8 +421,7 @@ buffered_dealloc(PyObject *op)
421421
return;
422422
_PyObject_GC_UNTRACK(self);
423423
self->ok = 0;
424-
if (self->weakreflist != NULL)
425-
PyObject_ClearWeakRefs(op);
424+
PyObject_ClearWeakRefs(op);
426425
if (self->buffer) {
427426
PyMem_Free(self->buffer);
428427
self->buffer = NULL;
@@ -2312,8 +2311,7 @@ bufferedrwpair_dealloc(PyObject *op)
23122311
rwpair *self = rwpair_CAST(op);
23132312
PyTypeObject *tp = Py_TYPE(self);
23142313
_PyObject_GC_UNTRACK(self);
2315-
if (self->weakreflist != NULL)
2316-
PyObject_ClearWeakRefs(op);
2314+
PyObject_ClearWeakRefs(op);
23172315
(void)bufferedrwpair_clear(op);
23182316
tp->tp_free(self);
23192317
Py_DECREF(tp);

Modules/_io/bytesio.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -979,8 +979,7 @@ bytesio_dealloc(PyObject *op)
979979
}
980980
Py_CLEAR(self->buf);
981981
Py_CLEAR(self->dict);
982-
if (self->weakreflist != NULL)
983-
PyObject_ClearWeakRefs(op);
982+
PyObject_ClearWeakRefs(op);
984983
tp->tp_free(self);
985984
Py_DECREF(tp);
986985
}

Modules/_io/fileio.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -570,9 +570,7 @@ fileio_dealloc(PyObject *op)
570570
PyMem_Free(self->stat_atopen);
571571
self->stat_atopen = NULL;
572572
}
573-
if (self->weakreflist != NULL) {
574-
PyObject_ClearWeakRefs(op);
575-
}
573+
PyObject_ClearWeakRefs(op);
576574
(void)fileio_clear(op);
577575

578576
PyTypeObject *tp = Py_TYPE(op);

Modules/_io/iobase.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -383,8 +383,7 @@ iobase_dealloc(PyObject *op)
383383
}
384384
PyTypeObject *tp = Py_TYPE(self);
385385
_PyObject_GC_UNTRACK(self);
386-
if (self->weakreflist != NULL)
387-
PyObject_ClearWeakRefs(op);
386+
PyObject_ClearWeakRefs(op);
388387
Py_CLEAR(self->dict);
389388
tp->tp_free(self);
390389
Py_DECREF(tp);

Modules/_io/stringio.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -638,9 +638,7 @@ stringio_dealloc(PyObject *op)
638638
}
639639
PyUnicodeWriter_Discard(self->writer);
640640
(void)stringio_clear(op);
641-
if (self->weakreflist != NULL) {
642-
PyObject_ClearWeakRefs(op);
643-
}
641+
PyObject_ClearWeakRefs(op);
644642
tp->tp_free(self);
645643
Py_DECREF(tp);
646644
}

Modules/_io/textio.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1469,8 +1469,7 @@ textiowrapper_dealloc(PyObject *op)
14691469
return;
14701470
self->ok = 0;
14711471
_PyObject_GC_UNTRACK(self);
1472-
if (self->weakreflist != NULL)
1473-
PyObject_ClearWeakRefs(op);
1472+
PyObject_ClearWeakRefs(op);
14741473
(void)textiowrapper_clear(op);
14751474
tp->tp_free(self);
14761475
Py_DECREF(tp);

Modules/_io/winconsoleio.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -518,8 +518,7 @@ winconsoleio_dealloc(PyObject *op)
518518
if (_PyIOBase_finalize(op) < 0)
519519
return;
520520
_PyObject_GC_UNTRACK(self);
521-
if (self->weakreflist != NULL)
522-
PyObject_ClearWeakRefs(op);
521+
PyObject_ClearWeakRefs(op);
523522
Py_CLEAR(self->dict);
524523
tp->tp_free(self);
525524
Py_DECREF(tp);

0 commit comments

Comments
 (0)