From c76da79b37d2bcbe575cc927ba0a9b7a9ce465db Mon Sep 17 00:00:00 2001 From: Mark Shannon Date: Thu, 29 Apr 2021 13:12:51 +0100 Subject: bpo-42739: Don't use sentinels to mark end of line table. (GH-25657) * Add length parameter to PyLineTable_InitAddressRange and doen't use sentinel values at end of table. Makes the line number table more robust. * Update PyCodeAddressRange to match PEP 626. --- Lib/test/test_code.py | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'Lib/test/test_code.py') diff --git a/Lib/test/test_code.py b/Lib/test/test_code.py index 467e8e5e33..6aaf04ca6d 100644 --- a/Lib/test/test_code.py +++ b/Lib/test/test_code.py @@ -264,6 +264,12 @@ class CodeTest(unittest.TestCase): new_code = code.replace(**{attr: value}) self.assertEqual(getattr(new_code, attr), value) + def test_empty_linetable(self): + def func(): + pass + new_code = code = func.__code__.replace(co_linetable=b'') + self.assertEqual(list(new_code.co_lines()), []) + def isinterned(s): return s is sys.intern(('_' + s + '_')[1:-1]) -- cgit v1.2.1