Replace some exit(n) calls with stg_exit(n); fixes trac #4445
authorIan Lynagh <igloo@earth.li>
Thu, 28 Oct 2010 13:48:54 +0000 (13:48 +0000)
committerIan Lynagh <igloo@earth.li>
Thu, 28 Oct 2010 13:48:54 +0000 (13:48 +0000)
Also changed exitcode of -1 to 1 in hpc.

rts/Hpc.c
rts/Linker.c
rts/RtsFlags.c
rts/win32/seh_excn.h

index 00b5a3d..81c802c 100644 (file)
--- a/rts/Hpc.c
+++ b/rts/Hpc.c
@@ -51,7 +51,7 @@ failure(char *msg) {
   } else {
     fprintf(stderr,"(perhaps remove .tix file?)\n");
   }
-  exit(-1);
+  stg_exit(1);
 }
 
 static int init_open(FILE *file) {
@@ -235,7 +235,7 @@ hs_hpc_module(char *modName,
        fprintf(stderr,"in module '%s'\n",tmpModule->modName);
        failure("module mismatch with .tix/.mix file hash number");
        fprintf(stderr,"(perhaps remove %s ?)\n",tixFilename);
-       exit(-1);
+       stg_exit(1);
 
       }
       for(i=0;i < modCount;i++) {
index 4b984da..1614a1a 100644 (file)
@@ -1109,7 +1109,7 @@ static void ghciInsertStrHashTable ( char* obj_name,
       (char*)key,
       obj_name
    );
-   exit(1);
+   stg_exit(1);
 }
 /* -----------------------------------------------------------------------------
  * initialize the object linker
index 2e8ee9e..c11cc3e 100644 (file)
@@ -554,7 +554,7 @@ error = rtsTrue;
                   else if (strequal("info",
                                &rts_argv[arg][2])) {
                       printRtsInfo();
-                      exit(0);
+                      stg_exit(0);
                   }
                   else {
                      errorBelch("unknown RTS option: %s",rts_argv[arg]);
index 7d17465..8829e84 100644 (file)
  *
  * seh_excn provides two macros, BEGIN_CATCH and END_CATCH, which
  * will catch such exceptions in the code they bracket and die by
- * printing a message and calling exit(1).
+ * printing a message and calling stg_exit(1).
  */
-#define ON_DIV_ZERO fprintf(stdout,"divide by zero\n"); fflush(stdout);exit(1)
-#define ON_STACK_OVERFLOW fprintf(stdout,"C stack overflow in generated code\n"); fflush(stdout); exit(1)
-#define ON_SIGSEGV fprintf(stdout,"Segmentation fault/access violation in generated code\n"); fflush(stdout); exit(1)
+#define ON_DIV_ZERO fprintf(stdout,"divide by zero\n"); fflush(stdout);stg_exit(1)
+#define ON_STACK_OVERFLOW fprintf(stdout,"C stack overflow in generated code\n"); fflush(stdout); stg_exit(1)
+#define ON_SIGSEGV fprintf(stdout,"Segmentation fault/access violation in generated code\n"); fflush(stdout); stg_exit(1)
 
 #if defined(__MINGW32__)
 extern jmp_buf seh_unwind_to;