fix: revert an illusory performance gain that broke debuggers. #1420
diff --git a/CHANGES.rst b/CHANGES.rst
index 1231541..357b7d7 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -27,10 +27,17 @@
constructs) could cause incorrect claims of missing branches with the
sys.monitoring core, as described in `issue 2070`_. This is now fixed.
+- Fix: when running in pytest under coverage, a ``breakpoint()`` would stop in
+ the wrong frame, one level down from where it should, as described in `issue
+ 1420`_. This was due to a coverage change in v6.4.1 that seemed to give a
+ slight performance improvement, but I couldn't reproduce the performance
+ gain, so it's been reverted, fixing the debugger problem.
+
- Split ``sqlite`` debugging information out of the ``sys`` :ref:`coverage
debug <cmd_debug>` and :ref:`cmd_run_debug` options since it's bulky and not
very useful.
+.. _issue 1420: https://github.com/nedbat/coveragepy/issues/1420
.. _issue 2070: https://github.com/nedbat/coveragepy/issues/2070
diff --git a/coverage/ctracer/tracer.c b/coverage/ctracer/tracer.c
index ed05a42..10b19f5 100644
--- a/coverage/ctracer/tracer.c
+++ b/coverage/ctracer/tracer.c
@@ -545,7 +545,6 @@
Py_XDECREF(self->pcur_entry->file_data);
self->pcur_entry->file_data = NULL;
self->pcur_entry->file_tracer = Py_None;
- MyFrame_NoTraceLines(frame);
SHOWLOG(PyFrame_GetLineNumber(frame), filename, "skipped");
}
diff --git a/coverage/ctracer/util.h b/coverage/ctracer/util.h
index 49c2508..e11eb70 100644
--- a/coverage/ctracer/util.h
+++ b/coverage/ctracer/util.h
@@ -33,10 +33,8 @@
#endif
#if PY_VERSION_HEX >= 0x030D0000
-#define MyFrame_NoTraceLines(f) (PyObject_SetAttrString((PyObject*)(f), "f_trace_lines", Py_False))
#define MyFrame_SetTrace(f, obj) (PyObject_SetAttrString((PyObject*)(f), "f_trace", (PyObject*)(obj)))
#else
-#define MyFrame_NoTraceLines(f) ((f)->f_trace_lines = 0)
#define MyFrame_SetTrace(f, obj) {Py_INCREF(obj); Py_XSETREF((f)->f_trace, (PyObject*)(obj));}
#endif