Module Name: src
Committed By: rillig
Date: Thu Oct 22 21:53:01 UTC 2020
Modified Files:
src/usr.bin/make: make.c
Log Message:
make(1): fix MakePrintStatusList
The current unit tests don't cover a situation where there are more than
100 errors reported at once. This fixes the bug introduced in the
previous commit, a few minutes ago.
To generate a diff of this commit:
cvs rdiff -u -r1.174 -r1.175 src/usr.bin/make/make.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/make.c
diff -u src/usr.bin/make/make.c:1.174 src/usr.bin/make/make.c:1.175
--- src/usr.bin/make/make.c:1.174 Thu Oct 22 21:49:44 2020
+++ src/usr.bin/make/make.c Thu Oct 22 21:53:01 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: make.c,v 1.174 2020/10/22 21:49:44 rillig Exp $ */
+/* $NetBSD: make.c,v 1.175 2020/10/22 21:53:01 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -107,7 +107,7 @@
#include "job.h"
/* "@(#)make.c 8.1 (Berkeley) 6/6/93" */
-MAKE_RCSID("$NetBSD: make.c,v 1.174 2020/10/22 21:49:44 rillig Exp $");
+MAKE_RCSID("$NetBSD: make.c,v 1.175 2020/10/22 21:53:01 rillig Exp $");
/* Sequence # to detect recursion. */
static unsigned int checked = 1;
@@ -1038,12 +1038,12 @@ static void MakePrintStatusList(GNodeLis
* or not created due to an error in a lower level.
* Callback function for Make_Run via Lst_ForEachUntil.
*/
-static int
+static Boolean
MakePrintStatus(GNode *gn, int *errors)
{
if (gn->flags & DONECYCLE)
/* We've completely processed this node before, don't do it again. */
- return 0;
+ return FALSE;
if (gn->unmade == 0) {
gn->flags |= DONECYCLE;
@@ -1076,7 +1076,7 @@ MakePrintStatus(GNode *gn, int *errors)
gn->name, gn->cohort_num);
break;
}
- return 0;
+ return FALSE;
}
DEBUG3(MAKE, "MakePrintStatus: %s%s has %d unmade children\n",
@@ -1091,7 +1091,7 @@ MakePrintStatus(GNode *gn, int *errors)
MakePrintStatusList(gn->children, errors);
/* Mark that this node needn't be processed again */
gn->flags |= DONECYCLE;
- return 0;
+ return FALSE;
}
/* Only output the error once per node */
@@ -1099,11 +1099,11 @@ MakePrintStatus(GNode *gn, int *errors)
Error("Graph cycles through `%s%s'", gn->name, gn->cohort_num);
if ((*errors)++ > 100)
/* Abandon the whole error report */
- return 1;
+ return TRUE;
/* Reporting for our children will give the rest of the loop */
MakePrintStatusList(gn->children, errors);
- return 0;
+ return FALSE;
}
static void
@@ -1111,7 +1111,8 @@ MakePrintStatusList(GNodeList *gnodes, i
{
GNodeListNode *ln;
for (ln = gnodes->first; ln != NULL; ln = ln->next)
- MakePrintStatus(ln->datum, errors);
+ if (MakePrintStatus(ln->datum, errors))
+ break;
}
/* Expand .USE nodes and create a new targets list.