py/runtime: Fix printing of failed allocation amounts.

On LP64 and LLP64 systems, size_t is bigger than unsigned.  Printing the
failed allocation using the new SIZE_FMT macro allows the correct failed
allocation size to be shown.

Example where this affects the failed allocation message (on x86_64
coverage build):

    >>> "a" * (1 << 54)

Before, this would print the size as 1.  Now it prints it as
18014398509481985 (2**54 + 1).

Signed-off-by: Jeff Epler <jepler@gmail.com>
This commit is contained in:
Jeff Epler
2025-08-15 08:01:12 -05:00
committed by Damien George
parent ab00806025
commit c91e091ad7

View File

@@ -1669,14 +1669,14 @@ mp_obj_t mp_parse_compile_execute(mp_lexer_t *lex, mp_parse_input_kind_t parse_i
#endif // MICROPY_ENABLE_COMPILER
MP_NORETURN void m_malloc_fail(size_t num_bytes) {
DEBUG_printf("memory allocation failed, allocating %u bytes\n", (uint)num_bytes);
DEBUG_printf("memory allocation failed, allocating " SIZE_FMT " bytes\n", num_bytes);
#if MICROPY_ENABLE_GC
if (gc_is_locked()) {
mp_raise_msg(&mp_type_MemoryError, MP_ERROR_TEXT("memory allocation failed, heap is locked"));
}
#endif
mp_raise_msg_varg(&mp_type_MemoryError,
MP_ERROR_TEXT("memory allocation failed, allocating %u bytes"), (uint)num_bytes);
MP_ERROR_TEXT("memory allocation failed, allocating " SIZE_FMT " bytes"), num_bytes);
}
#if MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_NONE