diff --git a/src/interpreter/frame.c b/src/interpreter/frame.c index e8e3293b..6ba02eb6 100644 --- a/src/interpreter/frame.c +++ b/src/interpreter/frame.c @@ -121,8 +121,11 @@ void Frame__gc_mark(py_Frame* self) { int Frame__lineno(const py_Frame* self) { int ip = self->ip; - if(ip < 0) return 0; - return c11__getitem(BytecodeEx, &self->co->codes_ex, ip).lineno; + if(ip >= 0) + return c11__getitem(BytecodeEx, &self->co->codes_ex, ip).lineno; + if(!self->is_locals_special) + return self->co->start_line; + return 0; } int Frame__iblock(const py_Frame* self) {