diff options
| author | Victor Stinner <vstinner@python.org> | 2023-07-09 15:50:26 (GMT) |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-09 15:50:26 (GMT) |
| commit | ee46cb6aa959d891b0a480fea29f1eb991e0fad8 (patch) | |
| tree | 01f90018669fcdeaf3dc568621a655cf8cc10078 | |
| parent | 1e12c8cfa373e57aaec65a574e5e4932bbbc0d4f (diff) | |
| download | cpython-ee46cb6aa959d891b0a480fea29f1eb991e0fad8.zip cpython-ee46cb6aa959d891b0a480fea29f1eb991e0fad8.tar.gz cpython-ee46cb6aa959d891b0a480fea29f1eb991e0fad8.tar.bz2 | |
gh-105927: PyWeakref_GetRef() returns 1 on success (#106561)
PyWeakref_GetRef() now returns 1 on success, and return 0 if the
reference is dead.
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
| -rw-r--r-- | Doc/c-api/weakref.rst | 6 | ||||
| -rw-r--r-- | Modules/_testcapimodule.c | 2 | ||||
| -rw-r--r-- | Objects/weakrefobject.c | 2 |
3 files changed, 6 insertions, 4 deletions
diff --git a/Doc/c-api/weakref.rst b/Doc/c-api/weakref.rst index 04781f7..038f54a 100644 --- a/Doc/c-api/weakref.rst +++ b/Doc/c-api/weakref.rst @@ -55,9 +55,11 @@ as much as it can. Get a :term:`strong reference` to the referenced object from a weak reference, *ref*, into *\*pobj*. - Return 0 on success. Raise an exception and return -1 on error. - If the referent is no longer live, set *\*pobj* to ``NULL`` and return 0. + * On success, set *\*pobj* to a new :term:`strong reference` to the + referenced object and return 1. + * If the reference is dead, set *\*pobj* to ``NULL`` and return 0. + * On error, raise an exception and return -1. .. versionadded:: 3.13 diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index 2baf453..50eaff9 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -3376,7 +3376,7 @@ test_weakref_capi(PyObject *Py_UNUSED(module), PyObject *Py_UNUSED(args)) // test PyWeakref_GetRef(), reference is alive PyObject *ref = Py_True; // marker to check that value was set - assert(PyWeakref_GetRef(weakref, &ref) == 0); + assert(PyWeakref_GetRef(weakref, &ref) == 1); assert(ref == obj); assert(Py_REFCNT(obj) == (refcnt + 1)); Py_DECREF(ref); diff --git a/Objects/weakrefobject.c b/Objects/weakrefobject.c index bac3e79..e956372 100644 --- a/Objects/weakrefobject.c +++ b/Objects/weakrefobject.c @@ -913,7 +913,7 @@ PyWeakref_GetRef(PyObject *ref, PyObject **pobj) return -1; } *pobj = _PyWeakref_GET_REF(ref); - return 0; + return (*pobj != NULL); } |
