From 12154b1774c0a05ce97af13307d106a76169ecc7 Mon Sep 17 00:00:00 2001 From: Damien George Date: Sat, 19 Mar 2016 21:41:01 +0000 Subject: [PATCH] extmod/uctypes: Use mp_binary_get_val helper when extracting value. It handles more cases than mp_binary_get_int. --- extmod/moductypes.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/extmod/moductypes.c b/extmod/moductypes.c index 9b078387b0..ad16284d95 100644 --- a/extmod/moductypes.c +++ b/extmod/moductypes.c @@ -282,12 +282,9 @@ STATIC mp_obj_t uctypes_struct_sizeof(mp_obj_t obj_in) { STATIC MP_DEFINE_CONST_FUN_OBJ_1(uctypes_struct_sizeof_obj, uctypes_struct_sizeof); STATIC inline mp_obj_t get_unaligned(uint val_type, void *p, int big_endian) { - mp_int_t val = mp_binary_get_int(GET_SCALAR_SIZE(val_type), val_type & 1, big_endian, p); - if (val_type == UINT32) { - return mp_obj_new_int_from_uint(val); - } else { - return mp_obj_new_int(val); - } + char struct_type = big_endian ? '>' : '<'; + static const char type2char[8] = "BbHhIiQq"; + return mp_binary_get_val(struct_type, type2char[val_type], (byte**)&p); } STATIC inline void set_unaligned(uint val_type, byte *p, int big_endian, mp_obj_t val) {