File tree Expand file tree Collapse file tree 1 file changed +15
-0
lines changed Expand file tree Collapse file tree 1 file changed +15
-0
lines changed Original file line number Diff line number Diff line change 6
6
#include "git-compat-util.h"
7
7
#include "cache.h"
8
8
9
+ static int dying ;
10
+
9
11
void vreportf (const char * prefix , const char * err , va_list params )
10
12
{
11
13
char msg [4096 ];
@@ -82,6 +84,12 @@ void NORETURN die(const char *err, ...)
82
84
{
83
85
va_list params ;
84
86
87
+ if (dying ) {
88
+ fputs ("fatal: recursion detected in die handler\n" , stderr );
89
+ exit (128 );
90
+ }
91
+ dying = 1 ;
92
+
85
93
va_start (params , err );
86
94
die_routine (err , params );
87
95
va_end (params );
@@ -94,6 +102,13 @@ void NORETURN die_errno(const char *fmt, ...)
94
102
char str_error [256 ], * err ;
95
103
int i , j ;
96
104
105
+ if (dying ) {
106
+ fputs ("fatal: recursion detected in die_errno handler\n" ,
107
+ stderr );
108
+ exit (128 );
109
+ }
110
+ dying = 1 ;
111
+
97
112
err = strerror (errno );
98
113
for (i = j = 0 ; err [i ] && j < sizeof (str_error ) - 1 ; ) {
99
114
if ((str_error [j ++ ] = err [i ++ ]) != '%' )
You can’t perform that action at this time.
0 commit comments