Merge remote-tracking branch 'local-2.0/stable-2.0'
[bpt/guile.git] / libguile / throw.c
index 4b3c75e..29ccc8a 100644 (file)
@@ -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;
 }
        
 
@@ -364,7 +370,7 @@ handler_message (void *handler_data, SCM tag, SCM args)
 
   if (should_print_backtrace (tag, stack))
     {
-      scm_puts ("Backtrace:\n", p);
+      scm_puts_unlocked ("Backtrace:\n", p);
       scm_display_backtrace_with_highlights (stack, p,
                                              SCM_BOOL_F, SCM_BOOL_F,
                                              SCM_EOL);