From ad9daadf8aa3b3e07abad3a85520624cef62911a Mon Sep 17 00:00:00 2001 From: Damien George Date: Wed, 29 Apr 2015 00:17:48 +0100 Subject: [PATCH] py: Fix attrtuple array length in print and creation. --- py/objattrtuple.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/py/objattrtuple.c b/py/objattrtuple.c index b3fa31448..04c17a2c6 100644 --- a/py/objattrtuple.c +++ b/py/objattrtuple.c @@ -34,7 +34,7 @@ STATIC #endif void mp_obj_attrtuple_print_helper(const mp_print_t *print, const qstr *fields, mp_obj_tuple_t *o) { mp_print_str(print, "("); - for (mp_uint_t i = 0; i < (o->len - 1); i++) { + for (mp_uint_t i = 0; i < o->len; i++) { if (i > 0) { mp_print_str(print, ", "); } @@ -51,7 +51,7 @@ void mp_obj_attrtuple_print_helper(const mp_print_t *print, const qstr *fields, STATIC void mp_obj_attrtuple_print(const mp_print_t *print, mp_obj_t o_in, mp_print_kind_t kind) { (void)kind; mp_obj_tuple_t *o = o_in; - const qstr *fields = (const qstr*)o->items[o->len - 1]; + const qstr *fields = (const qstr*)o->items[o->len]; mp_obj_attrtuple_print_helper(print, fields, o); } @@ -71,8 +71,9 @@ STATIC void mp_obj_attrtuple_attr(mp_obj_t self_in, qstr attr, mp_obj_t *dest) { } mp_obj_t mp_obj_new_attrtuple(const qstr *fields, mp_uint_t n, const mp_obj_t *items) { - mp_obj_tuple_t *o = mp_obj_new_tuple(n + 1, NULL); + mp_obj_tuple_t *o = m_new_obj_var(mp_obj_tuple_t, mp_obj_t, n + 1); o->base.type = &mp_type_attrtuple; + o->len = n; for (mp_uint_t i = 0; i < n; i++) { o->items[i] = items[i]; }