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 66#include "git-compat-util.h"
77#include "cache.h"
88
9+ static int dying ;
10+
911void vreportf (const char * prefix , const char * err , va_list params )
1012{
1113 char msg [4096 ];
@@ -82,6 +84,12 @@ void NORETURN die(const char *err, ...)
8284{
8385 va_list params ;
8486
87+ if (dying ) {
88+ fputs ("fatal: recursion detected in die handler\n" , stderr );
89+ exit (128 );
90+ }
91+ dying = 1 ;
92+
8593 va_start (params , err );
8694 die_routine (err , params );
8795 va_end (params );
@@ -94,6 +102,13 @@ void NORETURN die_errno(const char *fmt, ...)
94102 char str_error [256 ], * err ;
95103 int i , j ;
96104
105+ if (dying ) {
106+ fputs ("fatal: recursion detected in die_errno handler\n" ,
107+ stderr );
108+ exit (128 );
109+ }
110+ dying = 1 ;
111+
97112 err = strerror (errno );
98113 for (i = j = 0 ; err [i ] && j < sizeof (str_error ) - 1 ; ) {
99114 if ((str_error [j ++ ] = err [i ++ ]) != '%' )
You can’t perform that action at this time.
0 commit comments