MinGW: truncate exit()'s argument to lowest 8 bits
For some reason, MinGW's bash cannot reliably detect failure of the child
process if a negative value is passed to exit(). This fixes it by
truncating the exit code in all calls of exit().
This issue was worked around in run_builtin() of git.c (2488df84 builtin
run_command: do not exit with -1, 2007-11-15). This workaround is no longer
necessary and is reverted.
Suggested-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
			
			
				maint
			
			
		
							parent
							
								
									606475f317
								
							
						
					
					
						commit
						47e3de0e79
					
				|  | @ -92,6 +92,8 @@ static inline int fcntl(int fd, int cmd, long arg) | ||||||
| 	errno = EINVAL; | 	errno = EINVAL; | ||||||
| 	return -1; | 	return -1; | ||||||
| } | } | ||||||
|  | /* bash cannot reliably detect negative return codes as failure */ | ||||||
|  | #define exit(code) exit((code) & 0xff) | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * simple adaptors |  * simple adaptors | ||||||
|  |  | ||||||
							
								
								
									
										2
									
								
								git.c
								
								
								
								
							
							
						
						
									
										2
									
								
								git.c
								
								
								
								
							|  | @ -245,7 +245,7 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv) | ||||||
|  |  | ||||||
| 	status = p->fn(argc, argv, prefix); | 	status = p->fn(argc, argv, prefix); | ||||||
| 	if (status) | 	if (status) | ||||||
| 		return status & 0xff; | 		return status; | ||||||
|  |  | ||||||
| 	/* Somebody closed stdout? */ | 	/* Somebody closed stdout? */ | ||||||
| 	if (fstat(fileno(stdout), &st)) | 	if (fstat(fileno(stdout), &st)) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Johannes Sixt
						Johannes Sixt