diff options
author | Andy Wingo <wingo@pobox.com> | 2009-01-04 14:06:52 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2009-01-04 14:06:52 +0100 |
commit | fb10a0084e0e670cf6ecad1e62e6f22e315672b9 (patch) | |
tree | bd13dd608db4d097f3afd3683443e803487d5a54 /libguile/vm-engine.h | |
parent | b1b942b74c0f2a9870326372843ea1baeafc3dcb (diff) | |
download | guile-fb10a0084e0e670cf6ecad1e62e6f22e315672b9.tar.gz |
allow `apply' on %nil-terminated lists
* libguile/vm-engine.h (PUSH_LIST): Add a parameter to check that the
list was proper.
* libguile/vm-i-system.c: Adapt PUSH_LIST callsites to pass SCM_NULLP or
SCM_NULL_OR_NIL_P, as appropriate. Add a check to return/values*.
* libguile/vm.c: Add lang.h header for SCM_NULL_OR_NIL_P.
* test-suite/tests/elisp.test: Fix XFAIL for elisp + apply.
Diffstat (limited to 'libguile/vm-engine.h')
-rw-r--r-- | libguile/vm-engine.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/libguile/vm-engine.h b/libguile/vm-engine.h index 217ad2e66..d0ceaf492 100644 --- a/libguile/vm-engine.h +++ b/libguile/vm-engine.h @@ -299,12 +299,12 @@ do \ } while (0) /* The opposite: push all of the elements in L onto the list. */ -#define PUSH_LIST(l) \ +#define PUSH_LIST(l, NILP) \ do \ { \ for (; scm_is_pair (l); l = SCM_CDR (l)) \ PUSH (SCM_CAR (l)); \ - if (SCM_UNLIKELY (!SCM_NULLP (l))) { \ + if (SCM_UNLIKELY (!NILP (l))) { \ err_args = scm_list_1 (l); \ goto vm_error_improper_list; \ } \ |