summaryrefslogtreecommitdiffstats
path: root/Tools/gdb/libpython.py
diff options
context:
space:
mode:
authorSam Gross <colesbury@gmail.com>2021-11-19 18:53:46 (GMT)
committerGitHub <noreply@github.com>2021-11-19 18:53:46 (GMT)
commit2a32dbf110cf80ec9a00290ea6bc84f409948cb0 (patch)
treea98887dee31d3b87f8d1aa2bbbd3c70da894b0d3 /Tools/gdb/libpython.py
parent4296396db017d782d3aa16100b366748c9ea4a04 (diff)
downloadcpython-2a32dbf110cf80ec9a00290ea6bc84f409948cb0.zip
cpython-2a32dbf110cf80ec9a00290ea6bc84f409948cb0.tar.gz
cpython-2a32dbf110cf80ec9a00290ea6bc84f409948cb0.tar.bz2
[3.9] bpo-45838: Fix incorrect line numbers in Tools/gdb/libpython.py (GH-29628)
The line number calculation in libpython.py did not properly handle negative (signed) line table deltas.
Diffstat (limited to 'Tools/gdb/libpython.py')
-rwxr-xr-xTools/gdb/libpython.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/Tools/gdb/libpython.py b/Tools/gdb/libpython.py
index aeaa63e..45be5ab 100755
--- a/Tools/gdb/libpython.py
+++ b/Tools/gdb/libpython.py
@@ -659,7 +659,10 @@ class PyCodeObjectPtr(PyObjectPtr):
addr += ord(addr_incr)
if addr > addrq:
return lineno
- lineno += ord(line_incr)
+ line_delta = ord(line_incr)
+ if line_delta >= 128:
+ line_delta -= 256
+ lineno += line_delta
return lineno