gpm/gpm-va_arg.patch
2010-09-09 12:55:44 +00:00

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 */