diff options
author | Bénédikt Tran <10796600+picnixz@users.noreply.github.com> | 2025-04-12 09:46:33 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-04-12 07:46:33 +0000 |
commit | a81232c769a4f67ee312c5c67a2148c54c6570d0 (patch) | |
tree | 77546009626a2c1af2d4a89c7fdcc74c652a6b26 /Python | |
parent | 292a7248cda89f497e06eff4aa0147d6ff22f6bb (diff) | |
download | cpython-a81232c769a4f67ee312c5c67a2148c54c6570d0.tar.gz cpython-a81232c769a4f67ee312c5c67a2148c54c6570d0.zip |
gh-132399: fix invalid function signatures on the free-threaded build (#132400)
Diffstat (limited to 'Python')
-rw-r--r-- | Python/gc_free_threading.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/Python/gc_free_threading.c b/Python/gc_free_threading.c index 4c459b02ce2..fa4cb56f01e 100644 --- a/Python/gc_free_threading.c +++ b/Python/gc_free_threading.c @@ -688,6 +688,12 @@ gc_mark_enqueue_no_buffer(PyObject *op, gc_mark_args_t *args) return 0; } +static inline int +gc_mark_enqueue_no_buffer_visitproc(PyObject *op, void *args) +{ + return gc_mark_enqueue_no_buffer(op, (gc_mark_args_t *)args); +} + static int gc_mark_enqueue_buffer(PyObject *op, gc_mark_args_t *args) { @@ -701,6 +707,12 @@ gc_mark_enqueue_buffer(PyObject *op, gc_mark_args_t *args) } } +static inline int +gc_mark_enqueue_buffer_visitproc(PyObject *op, void *args) +{ + return gc_mark_enqueue_buffer(op, (gc_mark_args_t *)args); +} + // Called when we find an object that needs to be marked alive (either from a // root or from calling tp_traverse). static int @@ -986,12 +998,12 @@ update_refs(const mi_heap_t *heap, const mi_heap_area_t *area, } static int -visit_clear_unreachable(PyObject *op, _PyObjectStack *stack) +visit_clear_unreachable(PyObject *op, void *stack) { if (gc_is_unreachable(op)) { _PyObject_ASSERT(op, _PyObject_GC_IS_TRACKED(op)); gc_clear_unreachable(op); - return _PyObjectStack_Push(stack, op); + return _PyObjectStack_Push((_PyObjectStack *)stack, op); } return 0; } @@ -1003,7 +1015,7 @@ mark_reachable(PyObject *op) _PyObjectStack stack = { NULL }; do { traverseproc traverse = Py_TYPE(op)->tp_traverse; - if (traverse(op, (visitproc)&visit_clear_unreachable, &stack) < 0) { + if (traverse(op, visit_clear_unreachable, &stack) < 0) { _PyObjectStack_Clear(&stack); return -1; } @@ -1273,7 +1285,7 @@ gc_propagate_alive_prefetch(gc_mark_args_t *args) return -1; } } - else if (traverse(op, (visitproc)&gc_mark_enqueue_buffer, args) < 0) { + else if (traverse(op, gc_mark_enqueue_buffer_visitproc, args) < 0) { return -1; } } @@ -1294,7 +1306,7 @@ gc_propagate_alive(gc_mark_args_t *args) assert(_PyObject_GC_IS_TRACKED(op)); assert(gc_is_alive(op)); traverseproc traverse = Py_TYPE(op)->tp_traverse; - if (traverse(op, (visitproc)&gc_mark_enqueue_no_buffer, args) < 0) { + if (traverse(op, gc_mark_enqueue_no_buffer_visitproc, args) < 0) { return -1; } } @@ -1751,9 +1763,7 @@ handle_resurrected_objects(struct collection_state *state) op->ob_ref_local -= 1; traverseproc traverse = Py_TYPE(op)->tp_traverse; - (void) traverse(op, - (visitproc)visit_decref_unreachable, - NULL); + (void)traverse(op, visit_decref_unreachable, NULL); } // Find resurrected objects |