mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
gh-128008: Add PyWeakref_IsDead() (GH-128009)
The `PyWeakref_IsDead()` function tests if a weak reference is dead without any side effects. Although you can also detect if a weak reference is dead using `PyWeakref_GetRef()`, that function returns a strong reference that must be `Py_DECREF()`'d, which can introduce side effects if the last reference is concurrently dropped (at least in the free threading build).
This commit is contained in:
parent
b9b3e4a076
commit
7b811d0562
5 changed files with 41 additions and 0 deletions
|
|
@ -45,6 +45,9 @@ PyAPI_FUNC(void) _PyWeakref_ClearRef(PyWeakReference *self);
|
|||
#define _PyWeakref_CAST(op) \
|
||||
(assert(PyWeakref_Check(op)), _Py_CAST(PyWeakReference*, (op)))
|
||||
|
||||
// Test if a weak reference is dead.
|
||||
PyAPI_FUNC(int) PyWeakref_IsDead(PyObject *ref);
|
||||
|
||||
Py_DEPRECATED(3.13) static inline PyObject* PyWeakref_GET_OBJECT(PyObject *ref_obj)
|
||||
{
|
||||
PyWeakReference *ref = _PyWeakref_CAST(ref_obj);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue