mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 20:00:19 +02:00
more robust scm_exit_status
* libguile/throw.c (scm_exit_status): In one of my bogus patches, I managed to make #<unspecified> reach this function, causing a segfault on SCM_CAR. Refactor to be more robust.
This commit is contained in:
parent
148dfc2409
commit
58e68be4bb
1 changed files with 8 additions and 2 deletions
|
@ -322,7 +322,7 @@ scm_handle_by_proc_catching_all (void *handler_data, SCM tag, SCM throw_args)
|
||||||
int
|
int
|
||||||
scm_exit_status (SCM args)
|
scm_exit_status (SCM args)
|
||||||
{
|
{
|
||||||
if (!SCM_NULL_OR_NIL_P (args))
|
if (scm_is_pair (args))
|
||||||
{
|
{
|
||||||
SCM cqa = SCM_CAR (args);
|
SCM cqa = SCM_CAR (args);
|
||||||
|
|
||||||
|
@ -330,8 +330,14 @@ scm_exit_status (SCM args)
|
||||||
return (scm_to_int (cqa));
|
return (scm_to_int (cqa));
|
||||||
else if (scm_is_false (cqa))
|
else if (scm_is_false (cqa))
|
||||||
return EXIT_FAILURE;
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue