summaryrefslogtreecommitdiff
path: root/libguile/eval.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2013-01-23 16:12:08 +0100
committerAndy Wingo <wingo@pobox.com>2013-01-23 16:12:08 +0100
commit747bd5347d8b36c41809a16cb3f17b23e9afa9bf (patch)
treec8fa343e92b5446e92b38efaa105489f4817e9be /libguile/eval.c
parentd7874b91830ebb1dbfc887d5309e5fce46a87fc2 (diff)
parentfaabd16157f8b55766cf890e79129c066fbc124b (diff)
downloadguile-747bd5347d8b36c41809a16cb3f17b23e9afa9bf.tar.gz
merge stable-2.0
There are some bugs with command-line handling that will be sorted out with the next commit.
Diffstat (limited to 'libguile/eval.c')
-rw-r--r--libguile/eval.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/libguile/eval.c b/libguile/eval.c
index 4076d16b7..f743ed78e 100644
--- a/libguile/eval.c
+++ b/libguile/eval.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012
+/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,
+ * 2005,2006,2007,2008,2009,2010,2011,2012,2013
* Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
@@ -851,6 +852,14 @@ prepare_boot_closure_env_for_apply (SCM proc, SCM args,
env = scm_cons (args, env);
i++;
}
+ else if (scm_is_true (alt)
+ && scm_is_pair (args) && !scm_is_keyword (CAR (args)))
+ {
+ /* Too many positional args, no rest arg, and we have an
+ alternate clause. */
+ mx = alt;
+ goto loop;
+ }
/* Now fill in env with unbound values, limn the rest of the args for
keywords, and fill in unbound values with their inits. */