Module Name:    src
Committed By:   rillig
Date:           Sun Dec  6 22:49:40 UTC 2020

Modified Files:
        src/usr.bin/make: compat.c

Log Message:
make(1): refactor error handling in Compat_Run

This is in preparation for the upcoming bug fixes.


To generate a diff of this commit:
cvs rdiff -u -r1.196 -r1.197 src/usr.bin/make/compat.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/make/compat.c
diff -u src/usr.bin/make/compat.c:1.196 src/usr.bin/make/compat.c:1.197
--- src/usr.bin/make/compat.c:1.196	Sat Nov 28 19:22:32 2020
+++ src/usr.bin/make/compat.c	Sun Dec  6 22:49:40 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: compat.c,v 1.196 2020/11/28 19:22:32 rillig Exp $	*/
+/*	$NetBSD: compat.c,v 1.197 2020/12/06 22:49:40 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -96,7 +96,7 @@
 #include "pathnames.h"
 
 /*	"@(#)compat.c	8.2 (Berkeley) 3/19/94"	*/
-MAKE_RCSID("$NetBSD: compat.c,v 1.196 2020/11/28 19:22:32 rillig Exp $");
+MAKE_RCSID("$NetBSD: compat.c,v 1.197 2020/12/06 22:49:40 rillig Exp $");
 
 static GNode *curTarg = NULL;
 static pid_t compatChild;
@@ -665,6 +665,7 @@ Compat_Run(GNodeList *targs)
 {
 	GNode *gn = NULL;	/* Current root target */
 	int indirectErrors;	/* Number of targets not remade due to errors */
+	Boolean seenError;
 
 	if (!shellName)
 		Shell_Init();
@@ -721,10 +722,12 @@ Compat_Run(GNodeList *targs)
 	/*
 	 * If the user has defined a .END target, run its commands.
 	 */
-	if (indirectErrors == 0) {
+	seenError = indirectErrors > 0;
+	if (!seenError) {
 		GNode *endNode = Targ_GetEndNode();
 		Compat_Make(endNode, endNode);
-		if (GNode_IsError(gn) || GNode_IsError(endNode)) {
+		seenError = GNode_IsError(gn) || GNode_IsError(endNode);
+		if (seenError) {
 			PrintOnError(gn, "\nStop.");
 			exit(1);
 		}

Reply via email to