67 lines
2.1 KiB
Diff
67 lines
2.1 KiB
Diff
|
Index: src/lib/report-lib.c
|
||
|
===================================================================
|
||
|
--- src/lib/report-lib.c.orig 2009-02-09 10:58:53.000000000 +0100
|
||
|
+++ src/lib/report-lib.c 2010-09-08 13:34:13.721996934 +0200
|
||
|
@@ -55,5 +55,7 @@ void gpm_report(int line, char *file, in
|
||
|
fprintf(stderr,"\n");
|
||
|
#endif
|
||
|
|
||
|
+ va_end(ap);
|
||
|
+
|
||
|
if(stat == GPM_STAT_OOPS) exit(1); /* may a lib function call exit ???? */
|
||
|
}
|
||
|
Index: src/report.c
|
||
|
===================================================================
|
||
|
--- src/report.c.orig 2009-02-09 10:58:53.000000000 +0100
|
||
|
+++ src/report.c 2010-09-08 13:34:45.694394879 +0200
|
||
|
@@ -76,6 +76,9 @@ void gpm_report(int line, char *file, in
|
||
|
#ifdef HAVE_VSYSLOG
|
||
|
va_list ap2;
|
||
|
#endif
|
||
|
+ int exit_request = 0; /* 0 -> return is requested
|
||
|
+ 1 -> exit(1) is requested
|
||
|
+ 2 -> _exit(1) is requested */
|
||
|
|
||
|
va_start(ap,text);
|
||
|
va_copy(ap3, ap);
|
||
|
@@ -129,7 +132,7 @@ void gpm_report(int line, char *file, in
|
||
|
vfprintf(stderr,text,ap);
|
||
|
fprintf(stderr,"\n");
|
||
|
|
||
|
- exit(1); /* we should have a oops()-function,but this works,too*/
|
||
|
+ exit_request = 1; /* we should have an oops()-function,but this works,too*/
|
||
|
break;
|
||
|
}
|
||
|
break; /* startup sequence */
|
||
|
@@ -188,7 +191,7 @@ void gpm_report(int line, char *file, in
|
||
|
vfprintf(stderr,text,ap);
|
||
|
fprintf(stderr,"\n");
|
||
|
|
||
|
- _exit(1); /* we are the fork()-child */
|
||
|
+ exit_request = 2; /* we are the fork()-child */
|
||
|
break;
|
||
|
}
|
||
|
break; /* running gpm */
|
||
|
@@ -216,7 +219,7 @@ void gpm_report(int line, char *file, in
|
||
|
vfprintf(console,text,ap);
|
||
|
fprintf(console,"\n");
|
||
|
|
||
|
- if(stat == GPM_STAT_OOPS) exit(1);
|
||
|
+ if(stat == GPM_STAT_OOPS) exit_request = 1;
|
||
|
|
||
|
break;
|
||
|
} /* switch for current modus */
|
||
|
@@ -226,6 +229,12 @@ void gpm_report(int line, char *file, in
|
||
|
#ifdef HAVE_VSYSLOG
|
||
|
va_end(ap2);
|
||
|
#endif
|
||
|
+ if (exit_request == 2)
|
||
|
+ _exit(1);
|
||
|
+ if (exit_request == 1)
|
||
|
+ exit(1);
|
||
|
+
|
||
|
+ return;
|
||
|
} /* gpm_report */
|
||
|
|
||
|
|