Skip to content

Commit dd4bbfb

Browse files
larryhastingsmiss-islington
authored andcommitted
gh-97943: PyFunction_GetAnnotations should return a borrowed reference. (GH-97949)
(cherry picked from commit 6bfb0be) Co-authored-by: larryhastings <larry@hastings.org>
1 parent 6057030 commit dd4bbfb

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)