1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-14 15:40:19 +02:00

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.
This commit is contained in:
Andy Wingo 2009-01-04 14:06:52 +01:00
parent b1b942b74c
commit fb10a0084e
4 changed files with 15 additions and 14 deletions

View file

@ -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; \
} \