diff options
-rw-r--r-- | args.c | 2 | ||||
-rw-r--r-- | args.h | 7 |
2 files changed, 6 insertions, 3 deletions
@@ -48,7 +48,7 @@ void args_normalize(struct args *args, cnum fill) bug_unless (fill <= args->argc); while (args->fill > fill) - args->list = cons(args->arg[--args->fill], args->list); + args->list = cons(z(args->arg[--args->fill]), args->list); while (args->fill < fill && args->list) args_add(args, pop(&args->list)); @@ -143,9 +143,12 @@ INLINE val args_at(struct args *args, cnum arg_index) INLINE val args_atz(struct args *args, cnum arg_index) { - if (arg_index < args->fill) + if (arg_index < args->fill) { return z(args->arg[arg_index]); - return car(z(args->list)); + } else { + loc l = car_l(args->list); + return zap(valptr(l)); + } } INLINE val args_get(struct args *args, cnum *arg_index) |