py/misc: Change sizeof to offsetof for variable-length alloc.
This fixes the case where e.g.
struct foo_t {
mp_obj_t x;
uint16_t y;
char buf[];
};
will have `sizeof(struct foo_t)==8`, but `offsetof(struct foo_t, buf)==6`.
When computing the size to allocate for `m_new_obj_var` we need to use
offsetof to avoid over-allocating. This is important especially when it
might cause it to spill over into another GC block.
This work was funded through GitHub Sponsors.
Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
This commit is contained in:
committed by
Damien George
parent
c85db05244
commit
b6a9778484
@@ -545,7 +545,7 @@ STATIC mp_obj_t extra_coverage(void) {
|
||||
fun_bc.context = &context;
|
||||
fun_bc.child_table = NULL;
|
||||
fun_bc.bytecode = (const byte *)"\x01"; // just needed for n_state
|
||||
mp_code_state_t *code_state = m_new_obj_var(mp_code_state_t, mp_obj_t, 1);
|
||||
mp_code_state_t *code_state = m_new_obj_var(mp_code_state_t, state, mp_obj_t, 1);
|
||||
code_state->fun_bc = &fun_bc;
|
||||
code_state->ip = (const byte *)"\x00"; // just needed for an invalid opcode
|
||||
code_state->sp = &code_state->state[0];
|
||||
|
||||
Reference in New Issue
Block a user