extmod/moductypes: Refactor string literal as array initializer.

Avoids the new Wunterminated-string-literal when compiled with gcc 15.1.

Also split out the duplicate string to a top-level array (probably the
duplicate string literal was interned, so unlikely to have any impact.)

This work was funded through GitHub Sponsors.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
This commit is contained in:
Angus Gratton 2025-05-09 13:34:37 +10:00 committed by Angus Gratton
parent 3fa77bdc7d
commit 7d5aba0523

View file

@ -277,15 +277,18 @@ static mp_obj_t uctypes_struct_sizeof(size_t n_args, const mp_obj_t *args) {
} }
static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(uctypes_struct_sizeof_obj, 1, 2, uctypes_struct_sizeof); static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(uctypes_struct_sizeof_obj, 1, 2, uctypes_struct_sizeof);
static const char type2char[16] = {
'B', 'b', 'H', 'h', 'I', 'i', 'Q', 'q',
'-', '-', '-', '-', '-', '-', 'f', 'd'
};
static inline mp_obj_t get_unaligned(uint val_type, byte *p, int big_endian) { static inline mp_obj_t get_unaligned(uint val_type, byte *p, int big_endian) {
char struct_type = big_endian ? '>' : '<'; char struct_type = big_endian ? '>' : '<';
static const char type2char[16] = "BbHhIiQq------fd";
return mp_binary_get_val(struct_type, type2char[val_type], p, &p); return mp_binary_get_val(struct_type, type2char[val_type], p, &p);
} }
static inline void set_unaligned(uint val_type, byte *p, int big_endian, mp_obj_t val) { static inline void set_unaligned(uint val_type, byte *p, int big_endian, mp_obj_t val) {
char struct_type = big_endian ? '>' : '<'; char struct_type = big_endian ? '>' : '<';
static const char type2char[16] = "BbHhIiQq------fd";
mp_binary_set_val(struct_type, type2char[val_type], val, p, &p); mp_binary_set_val(struct_type, type2char[val_type], val, p, &p);
} }