QUERY · ISSUE
Conversion from const char* to mp_rom_error_text_t ?
py-core
The compiler can't evaluate the strcmp tree generated by MP_ERROR_TEXT(x) at compile time if x is determined at runtime (for example a call to an old style xxx_strerror function):
mp_raise_msg(&mp_type_OSError, MP_ERROR_TEXT(ffs_strerror(res)));
This results in a copy of the tree for every invocation of MP_ERROR_TEXT, so the return result can't be compressed and must be cast to mp_rom_error_text_t instead. This should be safe for now, but will it change in the future ? And if so, shouldn't there be a function or macro to hide this conversion since all exceptions formally accept mp_rom_error_text_t arg ? Something like:
#define MP_ERROR_TEXT_FROM_STR(x) (mp_rom_error_text_t) x
CANDIDATE · PULL REQUEST
unix/modjni: Fix build error.
port-unix
- Superfluous comments in MP_DEFINE_CONST_OBJ_TYPE stop correct macro expanding.
- MP_ERROR_TEXT now gives mp_rom_error_text_t, but we want plain const char *.