py/modstruct: Fix struct.pack_into with unaligned offset of native type.
Following the same fix for unpack.
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user