Skip to content

Commit 4297499

Browse files
authored
gh-109207: Fix SystemError when printing symtable entry object. (GH-109225)
1 parent 2dd6a86 commit 4297499

File tree

3 files changed

+7
-3
lines changed

3 files changed

+7
-3
lines changed

Lib/test/test_symtable.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,10 @@ def test_symtable_repr(self):
251251
self.assertEqual(str(self.top), "<SymbolTable for module ?>")
252252
self.assertEqual(str(self.spam), "<Function SymbolTable for spam in ?>")
253253

254+
def test_symtable_entry_repr(self):
255+
expected = f"<symtable entry top({self.top.get_id()}), line {self.top.get_lineno()}>"
256+
self.assertEqual(repr(self.top._table), expected)
257+
254258

255259
if __name__ == '__main__':
256260
unittest.main()
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix a SystemError in ``__repr__`` of symtable entry object.

Python/symtable.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -150,9 +150,8 @@ ste_new(struct symtable *st, identifier name, _Py_block_ty block,
150150
static PyObject *
151151
ste_repr(PySTEntryObject *ste)
152152
{
153-
return PyUnicode_FromFormat("<symtable entry %U(%ld), line %d>",
154-
ste->ste_name,
155-
PyLong_AS_LONG(ste->ste_id), ste->ste_lineno);
153+
return PyUnicode_FromFormat("<symtable entry %U(%R), line %d>",
154+
ste->ste_name, ste->ste_id, ste->ste_lineno);
156155
}
157156

158157
static void

0 commit comments

Comments
 (0)