Jelajahi Sumber

Merge pull request #348 from lightovernight/fix-lineno

Fix line number reporting in trace functions for function calls
BLUELOVETH 1 tahun lalu
induk
melakukan
1d73bdf241
1 mengubah file dengan 5 tambahan dan 2 penghapusan
  1. 5 2
      src/interpreter/frame.c

+ 5 - 2
src/interpreter/frame.c

@@ -121,8 +121,11 @@ void Frame__gc_mark(py_Frame* self) {
 
 
 int Frame__lineno(const py_Frame* self) {
 int Frame__lineno(const py_Frame* self) {
     int ip = self->ip;
     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) {
 int Frame__iblock(const py_Frame* self) {