Skip to content

Commit eb7f65d

Browse files
committed
Simplify weakref creation
1 parent b54d7c8 commit eb7f65d

File tree

1 file changed

+3
-13
lines changed

1 file changed

+3
-13
lines changed

Objects/weakrefobject.c

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -801,24 +801,14 @@ PyWeakref_NewRef(PyObject *ob, PyObject *callback)
801801
if (result != NULL)
802802
Py_INCREF(result);
803803
else {
804-
/* Note: new_weakref() can trigger cyclic GC, so the weakref
805-
list on ob can be mutated. This means that the ref and
806-
proxy pointers we got back earlier may have been collected,
807-
so we need to compute these values again before we use
808-
them. */
804+
/* We do not need to recompute ref/proxy here; new_weakref() cannot
805+
trigger cyclic GC.
806+
*/
809807
result = new_weakref(ob, callback);
810808
if (result != NULL) {
811-
get_basic_refs(*list, &ref, &proxy);
812809
if (callback == NULL) {
813810
if (ref == NULL)
814811
insert_head(result, list);
815-
else {
816-
/* Someone else added a ref without a callback
817-
during GC. Return that one instead of this one
818-
to avoid violating the invariants of the list
819-
of weakrefs for ob. */
820-
Py_SETREF(result, (PyWeakReference*)Py_NewRef(ref));
821-
}
822812
}
823813
else {
824814
PyWeakReference *prev;

0 commit comments

Comments
 (0)