summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Epler <jepler@gmail.com>2025-06-21 09:35:39 +0200
committerDamien George <damien@micropython.org>2025-07-06 00:06:34 +1000
commitdb0a836fc1c4cb20fc84edca19b57534d7365287 (patch)
tree2eb816090e3b2dc2c38fad5ad3907d89ef277ec8
parentf33f1aa9d36c4dd2de4e1209ed7a94f14505d981 (diff)
py/profile: Fix printing lineno in frame objects.
The argument corresponding to a `%q` specifier must be of type `qstr`, not a narrower type like `int16_t`. Not ensuring this caused an assertion error on one Windows x64 build. The argument corresponding to a `%d` specifier must be of type `int`, not a potentially-wider type like `mp_uint_t`. Not ensuring this prevented the function name from being printed on the unix nanbox build. Signed-off-by: Jeff Epler <jepler@gmail.com>
-rw-r--r--py/objcode.h2
-rw-r--r--py/profile.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/py/objcode.h b/py/objcode.h
index 8db9a34b6..8f26bd9db 100644
--- a/py/objcode.h
+++ b/py/objcode.h
@@ -72,7 +72,7 @@ static inline const void *mp_code_get_proto_fun(mp_obj_code_t *self) {
#include "py/emitglue.h"
-#define MP_CODE_QSTR_MAP(context, idx) (context->constants.qstr_table[idx])
+#define MP_CODE_QSTR_MAP(context, idx) ((qstr)(context->constants.qstr_table[idx]))
typedef struct _mp_obj_code_t {
// TODO this was 4 words
diff --git a/py/profile.c b/py/profile.c
index 397d0291f..b5a0c5472 100644
--- a/py/profile.c
+++ b/py/profile.c
@@ -80,7 +80,7 @@ static void frame_print(const mp_print_t *print, mp_obj_t o_in, mp_print_kind_t
"<frame at 0x%p, file '%q', line %d, code %q>",
frame,
MP_CODE_QSTR_MAP(code->context, 0),
- frame->lineno,
+ (int)frame->lineno,
MP_CODE_QSTR_MAP(code->context, prelude->qstr_block_name_idx)
);
}