py/modstruct: Fix struct.pack_into with unaligned offset of native type.

Following the same fix for unpack.
This commit is contained in:
Damien George
2019-09-02 12:57:51 +10:00
parent 1022f9cc35
commit 24c3e9b283
5 changed files with 14 additions and 6 deletions

View File

@@ -250,14 +250,14 @@ void mp_binary_set_int(mp_uint_t val_sz, bool big_endian, byte *dest, mp_uint_t
}
}
void mp_binary_set_val(char struct_type, char val_type, mp_obj_t val_in, byte **ptr) {
void mp_binary_set_val(char struct_type, char val_type, mp_obj_t val_in, byte *p_base, byte **ptr) {
byte *p = *ptr;
mp_uint_t align;
size_t size = mp_binary_get_size(struct_type, val_type, &align);
if (struct_type == '@') {
// Make pointer aligned
p = (byte*)MP_ALIGN(p, (size_t)align);
// Align p relative to p_base
p = p_base + (uintptr_t)MP_ALIGN(p - p_base, (size_t)align);
if (MP_ENDIANNESS_LITTLE) {
struct_type = '<';
} else {