diff options
author | Pablo Galindo <Pablogsal@gmail.com> | 2020-05-27 09:03:38 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-27 09:03:38 (GMT) |
commit | 1cf15af9a6f28750f37b08c028ada31d38e818dd (patch) | |
tree | 19918a3d6cc25f3f2bcd14687be59c8926825020 /Modules | |
parent | 404b23b85b17c84e022779f31fc89cb0ed0d37e8 (diff) | |
download | cpython-1cf15af9a6f28750f37b08c028ada31d38e818dd.zip cpython-1cf15af9a6f28750f37b08c028ada31d38e818dd.tar.gz cpython-1cf15af9a6f28750f37b08c028ada31d38e818dd.tar.bz2 |
bpo-40217: Ensure Py_VISIT(Py_TYPE(self)) is always called for PyType_FromSpec types (reverts GH-19414) (GH-20264)
Heap types now always visit the type in tp_traverse. See added docs for details.
This reverts commit 0169d3003be3d072751dd14a5c84748ab63a249f.
Automerge-Triggered-By: @encukou
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/_abc.c | 1 | ||||
-rw-r--r-- | Modules/_curses_panel.c | 1 | ||||
-rw-r--r-- | Modules/_json.c | 2 | ||||
-rw-r--r-- | Modules/_struct.c | 1 | ||||
-rw-r--r-- | Modules/xxlimited.c | 1 |
5 files changed, 6 insertions, 0 deletions
diff --git a/Modules/_abc.c b/Modules/_abc.c index 434bc45..709b52f 100644 --- a/Modules/_abc.c +++ b/Modules/_abc.c @@ -46,6 +46,7 @@ typedef struct { static int abc_data_traverse(_abc_data *self, visitproc visit, void *arg) { + Py_VISIT(Py_TYPE(self)); Py_VISIT(self->_abc_registry); Py_VISIT(self->_abc_cache); Py_VISIT(self->_abc_negative_cache); diff --git a/Modules/_curses_panel.c b/Modules/_curses_panel.c index 7ca91f6..f124803 100644 --- a/Modules/_curses_panel.c +++ b/Modules/_curses_panel.c @@ -39,6 +39,7 @@ _curses_panel_clear(PyObject *m) static int _curses_panel_traverse(PyObject *m, visitproc visit, void *arg) { + Py_VISIT(Py_TYPE(m)); Py_VISIT(get_curses_panelstate(m)->PyCursesError); return 0; } diff --git a/Modules/_json.c b/Modules/_json.c index 075aa3d..faa3944 100644 --- a/Modules/_json.c +++ b/Modules/_json.c @@ -647,6 +647,7 @@ scanner_dealloc(PyObject *self) static int scanner_traverse(PyScannerObject *self, visitproc visit, void *arg) { + Py_VISIT(Py_TYPE(self)); Py_VISIT(self->object_hook); Py_VISIT(self->object_pairs_hook); Py_VISIT(self->parse_float); @@ -1745,6 +1746,7 @@ encoder_dealloc(PyObject *self) static int encoder_traverse(PyEncoderObject *self, visitproc visit, void *arg) { + Py_VISIT(Py_TYPE(self)); Py_VISIT(self->markers); Py_VISIT(self->defaultfn); Py_VISIT(self->encoder); diff --git a/Modules/_struct.c b/Modules/_struct.c index 5984bb6..f759f0b 100644 --- a/Modules/_struct.c +++ b/Modules/_struct.c @@ -1646,6 +1646,7 @@ unpackiter_dealloc(unpackiterobject *self) static int unpackiter_traverse(unpackiterobject *self, visitproc visit, void *arg) { + Py_VISIT(Py_TYPE(self)); Py_VISIT(self->so); Py_VISIT(self->buf.obj); return 0; diff --git a/Modules/xxlimited.c b/Modules/xxlimited.c index 7ce0b6e..5b05a94 100644 --- a/Modules/xxlimited.c +++ b/Modules/xxlimited.c @@ -43,6 +43,7 @@ newXxoObject(PyObject *arg) static int Xxo_traverse(XxoObject *self, visitproc visit, void *arg) { + Py_VISIT(Py_TYPE(self)); Py_VISIT(self->x_attr); return 0; } |