From 11973b48b58862d346f416f400887061eb032898 Mon Sep 17 00:00:00 2001
From: Paul Sokolovsky <pfalcon@users.sourceforge.net>
Date: Tue, 28 Jan 2014 02:31:52 +0200
Subject: [PATCH] array.array: Allow to create empty arrays.

---
 py/objarray.c | 23 ++++++++++-------------
 1 file changed, 10 insertions(+), 13 deletions(-)

diff --git a/py/objarray.c b/py/objarray.c
index 4f3656115..88f788811 100644
--- a/py/objarray.c
+++ b/py/objarray.c
@@ -164,20 +164,17 @@ static mp_obj_t array_construct(char typecode, mp_obj_t initializer) {
 }
 
 static mp_obj_t array_make_new(mp_obj_t type_in, uint n_args, uint n_kw, const mp_obj_t *args) {
-    switch (n_args) {
-        case 2:
-        {
-            // TODO check args
-            uint l;
-            const byte *s = mp_obj_str_get_data(args[0], &l);
-            mp_obj_t initializer = args[1];
-            return array_construct(*s, initializer);
-        }
-
-        default:
-            nlr_jump(mp_obj_new_exception_msg_varg(MP_QSTR_TypeError, "unexpected # of arguments, %d given", n_args));
+    if (n_args < 1 || n_args > 2) {
+        nlr_jump(mp_obj_new_exception_msg_varg(MP_QSTR_TypeError, "unexpected # of arguments, %d given", n_args));
+    }
+    // TODO check args
+    uint l;
+    const byte *typecode = mp_obj_str_get_data(args[0], &l);
+    if (n_args == 1) {
+        return array_new(*typecode, 0);
     }
-    return NULL;
+
+    return array_construct(*typecode, args[1]);
 }
 
 // This is top-level factory function, not virtual method
-- 
GitLab