summaryrefslogtreecommitdiffstatshomepage
path: root/py/objfun.c
diff options
context:
space:
mode:
Diffstat (limited to 'py/objfun.c')
-rw-r--r--py/objfun.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/py/objfun.c b/py/objfun.c
index 0b0df3ba4d..adf05ce404 100644
--- a/py/objfun.c
+++ b/py/objfun.c
@@ -211,9 +211,13 @@ arg_error:
}
STATIC mp_obj_t fun_bc_call(mp_obj_t self_in, uint n_args, uint n_kw, const mp_obj_t *args) {
- DEBUG_printf("Input: ");
+ DEBUG_printf("Input n_args: %d, n_kw: %d\n", n_args, n_kw);
+ DEBUG_printf("Input pos args: ");
dump_args(args, n_args);
+ DEBUG_printf("Input kw args: ");
+ dump_args(args + n_args, n_kw * 2);
mp_obj_fun_bc_t *self = self_in;
+ DEBUG_printf("Func n_def_args: %d\n", self->n_def_args);
const mp_obj_t *kwargs = args + n_args;
mp_obj_t *extra_args = self->extra_args + self->n_def_args;
@@ -295,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: ");