summaryrefslogtreecommitdiff
path: root/py/objtuple.c
diff options
context:
space:
mode:
authorJeff Epler <jepler@gmail.com>2019-08-10 10:10:41 -0500
committerJeff Epler <jepler@gmail.com>2019-08-10 10:10:41 -0500
commit3eb418af39ad6151c9af4caf5c129397c7c14f67 (patch)
treeeddf05a5ed2d8a8ba049a24e7615c4d29ad00e86 /py/objtuple.c
parent47a0b7cba141efb0909d74db3401ae902f6e9a96 (diff)
py: mp_obj_tuple_get: accept any item which can use tuple_getiter
.. such as namedtuple and attrtuple objects. This is the same predicate used elsewhere in the file to check for adequate compatibility between the types. This was discovered due to crashing `time.time()` on the nrf port. Closes: #2052
Diffstat (limited to 'py/objtuple.c')
-rw-r--r--py/objtuple.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/py/objtuple.c b/py/objtuple.c
index 474f81c1a..ed13cdcef 100644
--- a/py/objtuple.c
+++ b/py/objtuple.c
@@ -251,7 +251,8 @@ mp_obj_t mp_obj_new_tuple(size_t n, const mp_obj_t *items) {
}
void mp_obj_tuple_get(mp_obj_t self_in, size_t *len, mp_obj_t **items) {
- assert(MP_OBJ_IS_TYPE(self_in, &mp_type_tuple));
+ // type check is done on getiter method to allow tuple, namedtuple, attrtuple
+ mp_check_self(mp_obj_get_type(self_in)->getiter == mp_obj_tuple_getiter);
mp_obj_tuple_t *self = MP_OBJ_TO_PTR(self_in);
*len = self->len;
*items = &self->items[0];