summaryrefslogtreecommitdiff
path: root/libguile/vm-engine.h
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2009-01-04 14:06:52 +0100
committerAndy Wingo <wingo@pobox.com>2009-01-04 14:06:52 +0100
commitfb10a0084e0e670cf6ecad1e62e6f22e315672b9 (patch)
treebd13dd608db4d097f3afd3683443e803487d5a54 /libguile/vm-engine.h
parentb1b942b74c0f2a9870326372843ea1baeafc3dcb (diff)
downloadguile-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.h4
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; \
} \