From a6daaf2a132efbb1965b4502ff8a8cf3b5afed0e Mon Sep 17 00:00:00 2001
From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Date: Thu, 21 Jul 2022 21:49:49 +0800
Subject: [PATCH] Fix PyCode_Addr2Location when addrq < 0 (GH-95091)

---
 .../2022-07-21-19-19-20.gh-issue-95060.4xdT1f.rst               | 2 ++
 Objects/codeobject.c                                            | 1 +
 2 files changed, 3 insertions(+)
 create mode 100644 Misc/NEWS.d/next/Core and Builtins/2022-07-21-19-19-20.gh-issue-95060.4xdT1f.rst

diff --git a/Misc/NEWS.d/next/Core and Builtins/2022-07-21-19-19-20.gh-issue-95060.4xdT1f.rst b/Misc/NEWS.d/next/Core and Builtins/2022-07-21-19-19-20.gh-issue-95060.4xdT1f.rst
new file mode 100644
index 00000000000..160999e82bf
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2022-07-21-19-19-20.gh-issue-95060.4xdT1f.rst	
@@ -0,0 +1,2 @@
+Undocumented ``PyCode_Addr2Location`` function now properly returns when
+``addrq`` argument is less than zero.
diff --git a/Objects/codeobject.c b/Objects/codeobject.c
index d4fa0e38aed..76e430ae1c5 100644
--- a/Objects/codeobject.c
+++ b/Objects/codeobject.c
@@ -971,6 +971,7 @@ PyCode_Addr2Location(PyCodeObject *co, int addrq,
     if (addrq < 0) {
         *start_line = *end_line = co->co_firstlineno;
         *start_column = *end_column = 0;
+        return 1;
     }
     assert(addrq >= 0 && addrq < _PyCode_NBYTES(co));
     PyCodeAddressRange bounds;
-- 
GitLab