Fix constructing empty namedtuple

this change from micropython was not taken with the merge
This commit is contained in:
Jeff Epler 2023-10-02 09:08:03 -05:00
parent fc58200ce0
commit 1b9ecabf8b
No known key found for this signature in database
GPG Key ID: D5BF15AB975AB4DE

View File

@ -115,9 +115,10 @@ mp_obj_t namedtuple_make_new(const mp_obj_type_t *type_in, size_t n_args, size_t
#endif
}
// Create a tuple and set the type to this namedtuple
mp_obj_tuple_t *tuple = MP_OBJ_TO_PTR(mp_obj_new_tuple(num_fields, NULL));
tuple->base.type = type_in;
// Create a namedtuple with explicit malloc. Calling mp_obj_new_tuple
// with num_fields=0 returns a read-only object.
mp_obj_tuple_t *tuple = mp_obj_malloc_var(mp_obj_tuple_t, mp_obj_t, num_fields, type_in);
tuple->len = num_fields;
// Copy the positional args into the first slots of the namedtuple
memcpy(&tuple->items[0], args, sizeof(mp_obj_t) * n_args);