This commit is contained in:
2026-01-29 00:20:17 -08:00
parent a64051403a
commit e5def8a0ad
2 changed files with 4 additions and 1 deletions

View File

@ -1,3 +1,3 @@
;; -*- mode: lisp-data -*- ;; -*- mode: lisp-data -*-
(print ((lambda (a) a) 1)) (print ((lambda (a b &rest r &key c &allow-other-keys) r) 1 2 :c 3 :d 4))

View File

@ -432,6 +432,7 @@ push_interpreted_args_to_lexenv(LispFunction *fobj, LispVal *args) {
LispVal *seen_kw = make_hash_table_no_gc(Qnil, Qnil); LispVal *seen_kw = make_hash_table_no_gc(Qnil, Qnil);
while (!NILP(args)) { while (!NILP(args)) {
if (NILP(XCDR(args))) { if (NILP(XCDR(args))) {
release_hash_table_no_gc(seen_kw);
return PROCESS_ARGS_NO_KEY_VALUE; return PROCESS_ARGS_NO_KEY_VALUE;
} }
// has index in front // has index in front
@ -440,6 +441,7 @@ push_interpreted_args_to_lexenv(LispFunction *fobj, LispVal *args) {
Fputhash(seen_kw, XCAR(args), Qt); Fputhash(seen_kw, XCAR(args), Qt);
push_optional_argument_to_lexenv(XCDR(i_spec), SECOND(args)); push_optional_argument_to_lexenv(XCDR(i_spec), SECOND(args));
} else if (!fobj->args.allow_other_keys) { } else if (!fobj->args.allow_other_keys) {
release_hash_table_no_gc(seen_kw);
return PROCESS_ARGS_BAD_KEY; return PROCESS_ARGS_BAD_KEY;
} }
args = XCDR(XCDR(args)); args = XCDR(XCDR(args));
@ -450,6 +452,7 @@ push_interpreted_args_to_lexenv(LispFunction *fobj, LispVal *args) {
XCDR(HASH_VALUE(fobj->args.kw, i))); XCDR(HASH_VALUE(fobj->args.kw, i)));
} }
} }
release_hash_table_no_gc(seen_kw);
return PROCESS_ARGS_OK; return PROCESS_ARGS_OK;
} }