diff options
-rw-r--r-- | py/objarray.c | 4 | ||||
-rw-r--r-- | tests/basics/bytearray_append.py | 15 |
2 files changed, 18 insertions, 1 deletions
diff --git a/py/objarray.c b/py/objarray.c index da9dd528c..bafba7623 100644 --- a/py/objarray.c +++ b/py/objarray.c @@ -336,7 +336,9 @@ STATIC mp_obj_t array_append(mp_obj_t self_in, mp_obj_t arg) { self->items = m_renew(byte, self->items, item_sz * self->len, item_sz * (self->len + self->free)); mp_seq_clear(self->items, self->len + 1, self->len + self->free, item_sz); } - mp_binary_set_val_array(self->typecode, self->items, self->len++, arg); + mp_binary_set_val_array(self->typecode, self->items, self->len, arg); + // only update length/free if set succeeded + self->len++; self->free--; return mp_const_none; // return None, as per CPython } diff --git a/tests/basics/bytearray_append.py b/tests/basics/bytearray_append.py new file mode 100644 index 000000000..06e62c6bc --- /dev/null +++ b/tests/basics/bytearray_append.py @@ -0,0 +1,15 @@ +# test bytearray.append method + +a = bytearray(4) +print(a) + +# append should append a single byte +a.append(2) +print(a) + +# a should not be modified if append fails +try: + a.append(None) +except TypeError: + print('TypeError') +print(a) |