summaryrefslogtreecommitdiff
path: root/libguile
diff options
context:
space:
mode:
Diffstat (limited to 'libguile')
-rw-r--r--libguile/throw.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/libguile/throw.c b/libguile/throw.c
index 4b3c75e9d..e3b5afa97 100644
--- a/libguile/throw.c
+++ b/libguile/throw.c
@@ -322,7 +322,7 @@ scm_handle_by_proc_catching_all (void *handler_data, SCM tag, SCM throw_args)
int
scm_exit_status (SCM args)
{
- if (!SCM_NULL_OR_NIL_P (args))
+ if (scm_is_pair (args))
{
SCM cqa = SCM_CAR (args);
@@ -330,8 +330,14 @@ scm_exit_status (SCM args)
return (scm_to_int (cqa));
else if (scm_is_false (cqa))
return EXIT_FAILURE;
+ else
+ return EXIT_SUCCESS;
}
- return EXIT_SUCCESS;
+ else if (scm_is_null (args))
+ return EXIT_SUCCESS;
+ else
+ /* A type error. Strictly speaking we shouldn't get here. */
+ return EXIT_FAILURE;
}