diff options
author | Victor Stinner <vstinner@redhat.com> | 2018-11-22 09:25:22 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-22 09:25:22 (GMT) |
commit | a42de742e7c20eeb64699b5785543fea65b2e8d3 (patch) | |
tree | 1cb5a0b7e6d6e12846b51dbb51a080a781209ec4 /Modules | |
parent | b37672daf61740fe1ff9d805f6d74bc5ef04012b (diff) | |
download | cpython-a42de742e7c20eeb64699b5785543fea65b2e8d3.zip cpython-a42de742e7c20eeb64699b5785543fea65b2e8d3.tar.gz cpython-a42de742e7c20eeb64699b5785543fea65b2e8d3.tar.bz2 |
bpo-35059: Cast void* to PyObject* (GH-10650)
Don't pass void* to Python macros: use _PyObject_CAST().
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/_threadmodule.c | 3 | ||||
-rw-r--r-- | Modules/gcmodule.c | 9 |
2 files changed, 7 insertions, 5 deletions
diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c index 72d044c..a4ddb87 100644 --- a/Modules/_threadmodule.c +++ b/Modules/_threadmodule.c @@ -1171,8 +1171,9 @@ This function is meant for internal and specialized purposes only.\n\ In most applications `threading.enumerate()` should be used instead."); static void -release_sentinel(void *wr) +release_sentinel(void *wr_raw) { + PyObject *wr = _PyObject_CAST(wr_raw); /* Tricky: this function is called when the current thread state is being deleted. Therefore, only simple C code can safely execute here. */ diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c index 506ae19..64140c1 100644 --- a/Modules/gcmodule.c +++ b/Modules/gcmodule.c @@ -1847,20 +1847,21 @@ _PyGC_Dump(PyGC_Head *g) functions must always be available */ void -PyObject_GC_Track(void *op) +PyObject_GC_Track(void *op_raw) { - PyObject *obj = (PyObject *)op; + PyObject *op = _PyObject_CAST(op_raw); if (_PyObject_GC_IS_TRACKED(op)) { _PyObject_ASSERT_FAILED_MSG(op, "object already tracked " "by the garbage collector"); } - _PyObject_GC_TRACK(obj); + _PyObject_GC_TRACK(op); } void -PyObject_GC_UnTrack(void *op) +PyObject_GC_UnTrack(void *op_raw) { + PyObject *op = _PyObject_CAST(op_raw); /* Obscure: the Py_TRASHCAN mechanism requires that we be able to * call PyObject_GC_UnTrack twice on an object. */ |