bpo-46417: remove_subclass() clears tp_subclasses by vstinner · Pull Request #30793 · python/cpython · GitHub
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
bpo-46417: remove_subclass() clears tp_subclasses
The remove_subclass() function now deletes the dictionary when
removing the last subclass (if the dictionary becomes empty) to save
memory: set PyTypeObject.tp_subclasses to NULL. remove_subclass() is
called when a type is deallocated.

_PyType_GetSubclasses() no longer holds a reference to tp_subclasses:
its loop cannot modify tp_subclasses.
  • Loading branch information
vstinner committed Jan 22, 2022
commit 98643ef98a5bb19bb2bbb9f66a2ce9ff82f13da8
17 changes: 17 additions & 0 deletions Lib/test/test_descr.py
24 changes: 15 additions & 9 deletions Objects/typeobject.c