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 | |
parent | 70ba38090b47d4dc0bd88fa39b6b1a5424d4793d (diff) | |
download | python-coveragepy-git-3cd4db3248fe48c3a531855227a9b2a3846e0110.tar.gz |
fix: adapt to 3.10.0a7's f_lasti field
-rw-r--r-- | .github/workflows/testsuite.yml | 2 | ||||
-rw-r--r-- | coverage/ctracer/tracer.c | 2 | ||||
-rw-r--r-- | coverage/ctracer/util.h | 8 |
3 files changed, 10 insertions, 2 deletions
diff --git a/.github/workflows/testsuite.yml b/.github/workflows/testsuite.yml index ee304af1..cf9aa52a 100644 --- a/.github/workflows/testsuite.yml +++ b/.github/workflows/testsuite.yml @@ -34,7 +34,7 @@ jobs: - "3.7" - "3.8" - "3.9" - - "3.10.0-alpha.6" + - "3.10.0-alpha.7" - "pypy3" exclude: # Windows PyPy doesn't seem to work? 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 { \ |