File tree Expand file tree Collapse file tree 20 files changed +59
-22
lines changed Expand file tree Collapse file tree 20 files changed +59
-22
lines changed Original file line number Diff line number Diff line change @@ -1532,7 +1532,9 @@ deque_dealloc(PyObject *self)
15321532 Py_ssize_t i ;
15331533
15341534 PyObject_GC_UnTrack (deque );
1535- PyObject_ClearWeakRefs (self );
1535+ if (deque -> weakreflist != NULL ) {
1536+ PyObject_ClearWeakRefs (self );
1537+ }
15361538 if (deque -> leftblock != NULL ) {
15371539 (void )deque_clear (self );
15381540 assert (deque -> leftblock != NULL );
Original file line number Diff line number Diff line change @@ -690,7 +690,8 @@ element_dealloc(PyObject *op)
690690 /* bpo-31095: UnTrack is needed before calling any callbacks */
691691 PyObject_GC_UnTrack (self );
692692
693- PyObject_ClearWeakRefs (op );
693+ if (self -> weakreflist != NULL )
694+ PyObject_ClearWeakRefs (op );
694695
695696 /* element_gc_clear clears all references and deallocates extra
696697 */
Original file line number Diff line number Diff line change @@ -351,7 +351,9 @@ 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- PyObject_ClearWeakRefs (self );
354+ if (partialobject_CAST (self )-> weakreflist != NULL ) {
355+ PyObject_ClearWeakRefs (self );
356+ }
355357 (void )partial_clear (self );
356358 tp -> tp_free (self );
357359 Py_DECREF (tp );
@@ -1619,7 +1621,9 @@ lru_cache_dealloc(PyObject *op)
16191621 PyTypeObject * tp = Py_TYPE (obj );
16201622 /* bpo-31095: UnTrack is needed before calling any callbacks */
16211623 PyObject_GC_UnTrack (obj );
1622- PyObject_ClearWeakRefs (op );
1624+ if (obj -> weakreflist != NULL ) {
1625+ PyObject_ClearWeakRefs (op );
1626+ }
16231627
16241628 (void )lru_cache_tp_clear (op );
16251629 tp -> tp_free (obj );
Original file line number Diff line number Diff line change @@ -421,7 +421,8 @@ buffered_dealloc(PyObject *op)
421421 return ;
422422 _PyObject_GC_UNTRACK (self );
423423 self -> ok = 0 ;
424- PyObject_ClearWeakRefs (op );
424+ if (self -> weakreflist != NULL )
425+ PyObject_ClearWeakRefs (op );
425426 if (self -> buffer ) {
426427 PyMem_Free (self -> buffer );
427428 self -> buffer = NULL ;
Original file line number Diff line number Diff line change @@ -570,7 +570,9 @@ fileio_dealloc(PyObject *op)
570570 PyMem_Free (self -> stat_atopen );
571571 self -> stat_atopen = NULL ;
572572 }
573- PyObject_ClearWeakRefs (op );
573+ if (self -> weakreflist != NULL ) {
574+ PyObject_ClearWeakRefs (op );
575+ }
574576 (void )fileio_clear (op );
575577
576578 PyTypeObject * tp = Py_TYPE (op );
Original file line number Diff line number Diff line change @@ -383,7 +383,8 @@ iobase_dealloc(PyObject *op)
383383 }
384384 PyTypeObject * tp = Py_TYPE (self );
385385 _PyObject_GC_UNTRACK (self );
386- PyObject_ClearWeakRefs (op );
386+ if (self -> weakreflist != NULL )
387+ PyObject_ClearWeakRefs (op );
387388 Py_CLEAR (self -> dict );
388389 tp -> tp_free (self );
389390 Py_DECREF (tp );
Original file line number Diff line number Diff line change @@ -1469,7 +1469,8 @@ textiowrapper_dealloc(PyObject *op)
14691469 return ;
14701470 self -> ok = 0 ;
14711471 _PyObject_GC_UNTRACK (self );
1472- PyObject_ClearWeakRefs (op );
1472+ if (self -> weakreflist != NULL )
1473+ PyObject_ClearWeakRefs (op );
14731474 (void )textiowrapper_clear (op );
14741475 tp -> tp_free (self );
14751476 Py_DECREF (tp );
Original file line number Diff line number Diff line change @@ -518,7 +518,8 @@ winconsoleio_dealloc(PyObject *op)
518518 if (_PyIOBase_finalize (op ) < 0 )
519519 return ;
520520 _PyObject_GC_UNTRACK (self );
521- PyObject_ClearWeakRefs (op );
521+ if (self -> weakreflist != NULL )
522+ PyObject_ClearWeakRefs (op );
522523 Py_CLEAR (self -> dict );
523524 tp -> tp_free (self );
524525 Py_DECREF (tp );
Original file line number Diff line number Diff line change @@ -221,7 +221,9 @@ simplequeue_dealloc(PyObject *op)
221221
222222 PyObject_GC_UnTrack (self );
223223 (void )simplequeue_clear (op );
224- PyObject_ClearWeakRefs (op );
224+ if (self -> weakreflist != NULL ) {
225+ PyObject_ClearWeakRefs (op );
226+ }
225227 tp -> tp_free (self );
226228 Py_DECREF (tp );
227229}
Original file line number Diff line number Diff line change @@ -56,7 +56,9 @@ blob_dealloc(PyObject *op)
5656
5757 close_blob (self );
5858
59- PyObject_ClearWeakRefs (op );
59+ if (self -> in_weakreflist != NULL ) {
60+ PyObject_ClearWeakRefs (op );
61+ }
6062 (void )tp -> tp_clear (op );
6163 tp -> tp_free (self );
6264 Py_DECREF (tp );
You can’t perform that action at this time.
0 commit comments