Skip to content

Commit 978607a

Browse files
committed
objfun: Fix default arguments filling loop, was broken in presense of kwargs.
1 parent 41e2dea commit 978607a

2 files changed

Lines changed: 8 additions & 2 deletions

File tree

py/objfun.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -299,9 +299,9 @@ continue2:;
299299
// Now fill in defaults
300300
mp_obj_t *d = &flat_args[self->n_args - 1];
301301
mp_obj_t *s = &self->extra_args[self->n_def_args - 1];
302-
for (int i = self->n_def_args; i > 0; i--) {
302+
for (int i = self->n_def_args; i > 0; i--, d--, s--) {
303303
if (*d == MP_OBJ_NULL) {
304-
*d-- = *s--;
304+
*d = *s;
305305
}
306306
}
307307
DEBUG_printf("Args after filling defaults: ");

tests/basics/fun-defargs2.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,9 @@ def foo(a, b=3):
1111

1212
# override with keyword
1313
foo(a=2, b=333)
14+
15+
def foo2(a=1, b=2):
16+
print(a, b)
17+
18+
# default and keyword
19+
foo2(b='two')

0 commit comments

Comments
 (0)