Skip to content

Commit 33cf0a6

Browse files
gh-97943: PyFunction_GetAnnotations should return a borrowed reference. (GH-97949)
(cherry picked from commit 6bfb0be) Co-authored-by: larryhastings <[email protected]>
1 parent 4aa2ebc commit 33cf0a6

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Bugfix: :func:`PyFunction_GetAnnotations` should return a borrowed
2+
reference. It was returning a new reference.

Objects/funcobject.c

+5-2
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,6 @@ func_get_annotation_dict(PyFunctionObject *op)
300300
}
301301
Py_SETREF(op->func_annotations, ann_dict);
302302
}
303-
Py_INCREF(op->func_annotations);
304303
assert(PyDict_Check(op->func_annotations));
305304
return op->func_annotations;
306305
}
@@ -532,7 +531,11 @@ func_get_annotations(PyFunctionObject *op, void *Py_UNUSED(ignored))
532531
if (op->func_annotations == NULL)
533532
return NULL;
534533
}
535-
return func_get_annotation_dict(op);
534+
PyObject *d = func_get_annotation_dict(op);
535+
if (d) {
536+
Py_INCREF(d);
537+
}
538+
return d;
536539
}
537540

538541
static int

0 commit comments

Comments
 (0)