py/objarray: Fix array.append so it doesn't extend if append fails.

Addresses issue #1965.
diff --git a/py/objarray.c b/py/objarray.c
index da9dd52..bafba76 100644
--- a/py/objarray.c
+++ b/py/objarray.c
@@ -336,7 +336,9 @@
         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
 }