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