diff options
-rw-r--r-- | py/objfun.c | 4 | ||||
-rw-r--r-- | tests/basics/fun-defargs2.py | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/py/objfun.c b/py/objfun.c index 4071432f97..adf05ce404 100644 --- a/py/objfun.c +++ b/py/objfun.c @@ -299,9 +299,9 @@ continue2:; // Now fill in defaults mp_obj_t *d = &flat_args[self->n_args - 1]; mp_obj_t *s = &self->extra_args[self->n_def_args - 1]; - for (int i = self->n_def_args; i > 0; i--) { + for (int i = self->n_def_args; i > 0; i--, d--, s--) { if (*d == MP_OBJ_NULL) { - *d-- = *s--; + *d = *s; } } DEBUG_printf("Args after filling defaults: "); diff --git a/tests/basics/fun-defargs2.py b/tests/basics/fun-defargs2.py index c9090a3cd2..8b72ed8b15 100644 --- a/tests/basics/fun-defargs2.py +++ b/tests/basics/fun-defargs2.py @@ -11,3 +11,9 @@ foo(1, b=333) # override with keyword foo(a=2, b=333) + +def foo2(a=1, b=2): + print(a, b) + +# default and keyword +foo2(b='two') |