summaryrefslogtreecommitdiff
path: root/libguile/init.c
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2008-09-10 22:50:04 +0200
committerLudovic Courtès <ludo@gnu.org>2008-09-10 22:50:04 +0200
commit6774820f1e83a388b3232cd61a66340886b395d8 (patch)
tree513cae9f2b9168aea1e4e20c3ce91cf89e0ce817 /libguile/init.c
parentb74e86cf5f50612742609210ad8e04d46069437f (diff)
parent29776e85da637ec4d44b2b2822d6934a50c0084b (diff)
downloadguile-6774820f1e83a388b3232cd61a66340886b395d8.tar.gz
Merge commit '29776e85da637ec4d44b2b2822d6934a50c0084b' into boehm-demers-weiser-gc
Conflicts: libguile/gc-card.c libguile/gc.c libguile/gc.h libguile/ports.c
Diffstat (limited to 'libguile/init.c')
-rw-r--r--libguile/init.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/libguile/init.c b/libguile/init.c
index b65bc17cb..d9d75242c 100644
--- a/libguile/init.c
+++ b/libguile/init.c
@@ -395,6 +395,14 @@ really_cleanup_for_exit (void *unused)
static void
cleanup_for_exit ()
{
+ if (scm_i_pthread_mutex_trylock (&scm_i_init_mutex) == 0)
+ scm_i_pthread_mutex_unlock (&scm_i_init_mutex);
+ else
+ {
+ fprintf (stderr, "Cannot exit gracefully when init is in progress; aborting.\n");
+ abort ();
+ }
+
/* This function might be called in non-guile mode, so we need to
enter it temporarily.
*/
@@ -474,6 +482,7 @@ scm_i_init_guile (SCM_STACKITEM *base)
scm_init_backtrace (); /* Requires fluids */
scm_init_fports ();
scm_init_strports ();
+ scm_init_ports ();
scm_init_gdbint (); /* Requires strports */
scm_init_hash ();
scm_init_hashtab ();
@@ -492,7 +501,6 @@ scm_i_init_guile (SCM_STACKITEM *base)
scm_init_numbers ();
scm_init_options ();
scm_init_pairs ();
- scm_init_ports ();
#ifdef HAVE_POSIX
scm_init_filesys ();
scm_init_posix ();