From dfa97742b62f83b5c892e5de78a3ef1a97ee8a27 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Wed, 10 Nov 2021 07:35:44 -0500 Subject: [PATCH] style: make these macros more bullet-proof --- coverage/ctracer/tracer.c | 2 +- coverage/ctracer/util.h | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/coverage/ctracer/tracer.c b/coverage/ctracer/tracer.c index 8b8953aa1..4227e7daf 100644 --- a/coverage/ctracer/tracer.c +++ b/coverage/ctracer/tracer.c @@ -523,7 +523,7 @@ CTracer_handle_call(CTracer *self, PyFrameObject *frame) * re-entering a generator also. f_lasti is -1 for a true call, and a * real byte offset for a generator re-entry. */ - if (frame->f_lasti < 0) { + if (MyFrame_lasti(frame) < 0) { self->pcur_entry->last_line = -MyFrame_GetCode(frame)->co_firstlineno; } else { diff --git a/coverage/ctracer/util.h b/coverage/ctracer/util.h index 413433d7b..ff139329a 100644 --- a/coverage/ctracer/util.h +++ b/coverage/ctracer/util.h @@ -15,17 +15,17 @@ // 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) +#define MyFrame_lasti(f) ((f)->f_lasti * 2) #else -#define MyFrame_lasti(f) f->f_lasti -#endif // 3.10.0a7 +#define MyFrame_lasti(f) ((f)->f_lasti) +#endif // Access f_code should be done through a helper starting in 3.9. #if PY_VERSION_HEX >= 0x03090000 #define MyFrame_GetCode(f) (PyFrame_GetCode(f)) #else #define MyFrame_GetCode(f) ((f)->f_code) -#endif // 3.11 +#endif /* The values returned to indicate ok or error. */ #define RET_OK 0