diff options
| author | Ned Batchelder <ned@nedbatchelder.com> | 2021-04-11 18:39:03 -0400 |
|---|---|---|
| committer | Ned Batchelder <ned@nedbatchelder.com> | 2021-04-11 18:39:03 -0400 |
| commit | 3cd4db3248fe48c3a531855227a9b2a3846e0110 (patch) | |
| tree | ea7718d57062ac7301b809bab0c552986fa974a3 /coverage | |
| parent | 70ba38090b47d4dc0bd88fa39b6b1a5424d4793d (diff) | |
| download | python-coveragepy-git-3cd4db3248fe48c3a531855227a9b2a3846e0110.tar.gz | |
fix: adapt to 3.10.0a7's f_lasti field
Diffstat (limited to 'coverage')
| -rw-r--r-- | coverage/ctracer/tracer.c | 2 | ||||
| -rw-r--r-- | coverage/ctracer/util.h | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/coverage/ctracer/tracer.c b/coverage/ctracer/tracer.c index 00e4218d..57a6c078 100644 --- a/coverage/ctracer/tracer.c +++ b/coverage/ctracer/tracer.c @@ -715,7 +715,7 @@ CTracer_handle_return(CTracer *self, PyFrameObject *frame) */ int bytecode = RETURN_VALUE; PyObject * pCode = frame->f_code->co_code; - int lasti = frame->f_lasti; + int lasti = MyFrame_lasti(frame); if (lasti < MyBytes_GET_SIZE(pCode)) { bytecode = MyBytes_AS_STRING(pCode)[lasti]; diff --git a/coverage/ctracer/util.h b/coverage/ctracer/util.h index 5cba9b30..420b1cbb 100644 --- a/coverage/ctracer/util.h +++ b/coverage/ctracer/util.h @@ -44,6 +44,14 @@ #endif /* Py3k */ +// The f_lasti field changed meaning in 3.10.0a7. It had been bytes, but +// now is instructions, so we need to adjust it to use it as a byte index. +#if PY_VERSION_HEX >= 0x030A00A7 +#define MyFrame_lasti(f) (f->f_lasti * 2) +#else +#define MyFrame_lasti(f) f->f_lasti +#endif // 3.10.0a7 + // Undocumented, and not in all 2.7.x, so our own copy of it. #define My_XSETREF(op, op2) \ do { \ |
