Use APIs that return strong references in fsevents extension #1131
+2,397
−21
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Partially supersedes #1109.
PyList_GetItemandPyDict_GetItemreturn borrowed references, which are not safe on the free-threaded build if the dict or list are possibly exposed to other threads. Python 3.13 added new variants of these APIs (PyList_GetItemRefandPyDict_GetItemRef) that return strong references and avoid the possibility of use-after-free errors due to a list or dict item getting deallocated due to the dict or list being manipulated by another thread.To use these new APIs, I added a copy of
pythoncapi_compat.h- see the pythoncapi-compat project for more details about that. I also updated the third-party licenses file with a new entry.Let me know if you'd prefer I vendor the code using e.g. a git submodule instead of how I did it here.