From: Victor Stinner Date: Sun, 9 Jul 2023 15:50:26 +0000 (+0200) Subject: gh-105927: PyWeakref_GetRef() returns 1 on success (#106561) X-Git-Tag: v3.13.0a1~1465 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ee46cb6aa959d891b0a480fea29f1eb991e0fad8;p=thirdparty%2FPython%2Fcpython.git 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 --- diff --git a/Doc/c-api/weakref.rst b/Doc/c-api/weakref.rst index 04781f78d234..038f54a9751f 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 2baf453f7102..50eaff9917fd 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 bac3e79bb7c2..e9563729bf82 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); }