Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/make make(1): require argument of Lst_Member to be n...



details:   https://anonhg.NetBSD.org/src/rev/cb07a33ca279
branches:  trunk
changeset: 942942:cb07a33ca279
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sat Aug 22 15:43:32 2020 +0000

description:
make(1): require argument of Lst_Member to be non-null

Since the lists don't contain null pointers, it doesn't make sense to
search for a null pointer.  All calls but one already had obviously
non-null arguments.  The one remaining call using targ->suff has been
guarded for now.

The code for Lst_Member became much simpler than before.  Partly because
the old code had an extra condition for circular lists, which are not
used by make.

diffstat:

 usr.bin/make/compat.c |  12 ++++++------
 usr.bin/make/dir.c    |  14 +++++++-------
 usr.bin/make/job.c    |  10 +++++-----
 usr.bin/make/lst.c    |  22 ++++++++--------------
 usr.bin/make/lst.h    |   4 ++--
 usr.bin/make/make.c   |   8 ++++----
 usr.bin/make/suff.c   |  22 ++++++++++++----------
 7 files changed, 44 insertions(+), 48 deletions(-)

diffs (truncated from 349 to 300 lines):

diff -r b408dfca5170 -r cb07a33ca279 usr.bin/make/compat.c
--- a/usr.bin/make/compat.c     Sat Aug 22 15:34:51 2020 +0000
+++ b/usr.bin/make/compat.c     Sat Aug 22 15:43:32 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: compat.c,v 1.123 2020/08/22 14:39:12 rillig Exp $      */
+/*     $NetBSD: compat.c,v 1.124 2020/08/22 15:43:32 rillig Exp $      */
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -70,14 +70,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: compat.c,v 1.123 2020/08/22 14:39:12 rillig Exp $";
+static char rcsid[] = "$NetBSD: compat.c,v 1.124 2020/08/22 15:43:32 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)compat.c   8.2 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: compat.c,v 1.123 2020/08/22 14:39:12 rillig Exp $");
+__RCSID("$NetBSD: compat.c,v 1.124 2020/08/22 15:43:32 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -232,7 +232,7 @@
     errCheck = !(gn->type & OP_IGNORE);
     doIt = FALSE;
 
-    cmdNode = Lst_Member(gn->commands, cmd);
+    cmdNode = Lst_MemberS(gn->commands, cmd);
     cmdStart = Var_Subst(cmd, gn, VARE_WANTRES);
 
     /*
@@ -538,7 +538,7 @@
            goto cohorts;
        }
 
-       if (Lst_Member(gn->iParents, pgn) != NULL) {
+       if (Lst_MemberS(gn->iParents, pgn) != NULL) {
            char *p1;
            Var_Set(IMPSRC, Var_Value(TARGET, gn, &p1), pgn);
            bmake_free(p1);
@@ -642,7 +642,7 @@
         */
        pgn->flags &= ~REMAKE;
     } else {
-       if (Lst_Member(gn->iParents, pgn) != NULL) {
+       if (Lst_MemberS(gn->iParents, pgn) != NULL) {
            char *p1;
            Var_Set(IMPSRC, Var_Value(TARGET, gn, &p1), pgn);
            bmake_free(p1);
diff -r b408dfca5170 -r cb07a33ca279 usr.bin/make/dir.c
--- a/usr.bin/make/dir.c        Sat Aug 22 15:34:51 2020 +0000
+++ b/usr.bin/make/dir.c        Sat Aug 22 15:43:32 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: dir.c,v 1.103 2020/08/22 15:17:09 rillig Exp $ */
+/*     $NetBSD: dir.c,v 1.104 2020/08/22 15:43:32 rillig Exp $ */
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -70,14 +70,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: dir.c,v 1.103 2020/08/22 15:17:09 rillig Exp $";
+static char rcsid[] = "$NetBSD: dir.c,v 1.104 2020/08/22 15:43:32 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)dir.c      8.2 (Berkeley) 1/2/94";
 #else
-__RCSID("$NetBSD: dir.c,v 1.103 2020/08/22 15:17:09 rillig Exp $");
+__RCSID("$NetBSD: dir.c,v 1.104 2020/08/22 15:43:32 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -417,7 +417,7 @@
        LstNode ln;
 
        /* Remove old entry from openDirectories, but do not destroy. */
-       ln = Lst_Member(openDirectories, dot);
+       ln = Lst_MemberS(openDirectories, dot);
        Lst_RemoveS(openDirectories, ln);
     }
 
@@ -1574,7 +1574,7 @@
        ln = Lst_Find(openDirectories, name, DirFindName);
     if (ln != NULL) {
        p = Lst_DatumS(ln);
-       if (path && Lst_Member(path, p) == NULL) {
+       if (path && Lst_MemberS(path, p) == NULL) {
            p->refCount += 1;
            Lst_AppendS(path, p);
        }
@@ -1702,7 +1702,7 @@
     if (p->refCount == 0) {
        LstNode ln;
 
-       ln = Lst_Member(openDirectories, p);
+       ln = Lst_MemberS(openDirectories, p);
        Lst_RemoveS(openDirectories, ln);
 
        Hash_DeleteTable(&p->files);
@@ -1764,7 +1764,7 @@
 
     for (ln = Lst_First(path2); ln != NULL; ln = Lst_Succ(ln)) {
        p = Lst_DatumS(ln);
-       if (Lst_Member(path1, p) == NULL) {
+       if (Lst_MemberS(path1, p) == NULL) {
            p->refCount += 1;
            Lst_AppendS(path1, p);
        }
diff -r b408dfca5170 -r cb07a33ca279 usr.bin/make/job.c
--- a/usr.bin/make/job.c        Sat Aug 22 15:34:51 2020 +0000
+++ b/usr.bin/make/job.c        Sat Aug 22 15:43:32 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: job.c,v 1.211 2020/08/22 13:28:20 rillig Exp $ */
+/*     $NetBSD: job.c,v 1.212 2020/08/22 15:43:32 rillig Exp $ */
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -70,14 +70,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: job.c,v 1.211 2020/08/22 13:28:20 rillig Exp $";
+static char rcsid[] = "$NetBSD: job.c,v 1.212 2020/08/22 15:43:32 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)job.c      8.2 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: job.c,v 1.211 2020/08/22 13:28:20 rillig Exp $");
+__RCSID("$NetBSD: job.c,v 1.212 2020/08/22 15:43:32 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -714,8 +714,8 @@
     if (strcmp(cmd, "...") == 0) {
        job->node->type |= OP_SAVE_CMDS;
        if ((job->flags & JOB_IGNDOTS) == 0) {
-           job->tailCmds = Lst_Succ(Lst_Member(job->node->commands,
-                                               cmd));
+           LstNode dotsNode = Lst_MemberS(job->node->commands, cmd);
+           job->tailCmds = Lst_Succ(dotsNode);
            return 1;
        }
        return 0;
diff -r b408dfca5170 -r cb07a33ca279 usr.bin/make/lst.c
--- a/usr.bin/make/lst.c        Sat Aug 22 15:34:51 2020 +0000
+++ b/usr.bin/make/lst.c        Sat Aug 22 15:43:32 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: lst.c,v 1.28 2020/08/22 15:17:09 rillig Exp $ */
+/* $NetBSD: lst.c,v 1.29 2020/08/22 15:43:32 rillig Exp $ */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -37,11 +37,11 @@
 #include "make.h"
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: lst.c,v 1.28 2020/08/22 15:17:09 rillig Exp $";
+static char rcsid[] = "$NetBSD: lst.c,v 1.29 2020/08/22 15:43:32 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: lst.c,v 1.28 2020/08/22 15:17:09 rillig Exp $");
+__RCSID("$NetBSD: lst.c,v 1.29 2020/08/22 15:43:32 rillig Exp $");
 #endif /* not lint */
 #endif
 
@@ -519,24 +519,18 @@
 
 /* Return the first node that contains the given datum, or NULL. */
 LstNode
-Lst_Member(Lst list, void *datum)
+Lst_MemberS(Lst list, void *datum)
 {
     LstNode node;
 
-    if (list == NULL) {
-       return NULL;
-    }
-    node = list->first;
-    if (node == NULL) {
-       return NULL;
-    }
+    assert(LstIsValid(list));
+    assert(datum != NULL);
 
-    do {
+    for (node = list->first; node != NULL; node = node->next) {
        if (node->datum == datum) {
            return node;
        }
-       node = node->next;
-    } while (node != NULL && node != list->first);
+    }
 
     return NULL;
 }
diff -r b408dfca5170 -r cb07a33ca279 usr.bin/make/lst.h
--- a/usr.bin/make/lst.h        Sat Aug 22 15:34:51 2020 +0000
+++ b/usr.bin/make/lst.h        Sat Aug 22 15:43:32 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: lst.h,v 1.34 2020/08/22 15:17:09 rillig Exp $  */
+/*     $NetBSD: lst.h,v 1.35 2020/08/22 15:43:32 rillig Exp $  */
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -155,7 +155,7 @@
  * See if the given datum is on the list. Returns the LstNode containing
  * the datum
  */
-LstNode                Lst_Member(Lst, void *);
+LstNode                Lst_MemberS(Lst, void *);
 /* Apply a function to all elements of a lst */
 int            Lst_ForEach(Lst, int (*)(void *, void *), void *);
 /* Apply a function to all elements of a lst starting from a certain point. */
diff -r b408dfca5170 -r cb07a33ca279 usr.bin/make/make.c
--- a/usr.bin/make/make.c       Sat Aug 22 15:34:51 2020 +0000
+++ b/usr.bin/make/make.c       Sat Aug 22 15:43:32 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: make.c,v 1.117 2020/08/22 15:17:09 rillig Exp $        */
+/*     $NetBSD: make.c,v 1.118 2020/08/22 15:43:32 rillig Exp $        */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: make.c,v 1.117 2020/08/22 15:17:09 rillig Exp $";
+static char rcsid[] = "$NetBSD: make.c,v 1.118 2020/08/22 15:43:32 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)make.c     8.1 (Berkeley) 6/6/93";
 #else
-__RCSID("$NetBSD: make.c,v 1.117 2020/08/22 15:17:09 rillig Exp $");
+__RCSID("$NetBSD: make.c,v 1.118 2020/08/22 15:43:32 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -525,7 +525,7 @@
      * children the parent has. This is used by Make_Run to decide
      * whether to queue the parent or examine its children...
      */
-    if ((ln = Lst_Member(pgn->children, cgn)) != NULL) {
+    if ((ln = Lst_MemberS(pgn->children, cgn)) != NULL) {
        Lst_RemoveS(pgn->children, ln);
        pgn->unmade--;
     }
diff -r b408dfca5170 -r cb07a33ca279 usr.bin/make/suff.c
--- a/usr.bin/make/suff.c       Sat Aug 22 15:34:51 2020 +0000
+++ b/usr.bin/make/suff.c       Sat Aug 22 15:43:32 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: suff.c,v 1.106 2020/08/22 15:17:09 rillig Exp $        */
+/*     $NetBSD: suff.c,v 1.107 2020/08/22 15:43:32 rillig Exp $        */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: suff.c,v 1.106 2020/08/22 15:17:09 rillig Exp $";
+static char rcsid[] = "$NetBSD: suff.c,v 1.107 2020/08/22 15:43:32 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)suff.c     8.4 (Berkeley) 3/21/94";
 #else
-__RCSID("$NetBSD: suff.c,v 1.106 2020/08/22 15:17:09 rillig Exp $");
+__RCSID("$NetBSD: suff.c,v 1.107 2020/08/22 15:43:32 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -407,7 +407,7 @@
 {
     Lst l = (Lst) lp;
 
-    LstNode ln = Lst_Member(l, sp);
+    LstNode ln = Lst_MemberS(l, sp);
     if (ln != NULL) {
        Lst_RemoveS(l, ln);
        ((Suff *)sp)->refCount--;
@@ -1303,7 +1303,7 @@
                free(s->pref);
            else {
 #ifdef DEBUG_SRC
-               LstNode ln2 = Lst_Member(s->parent->cp, s);
+               LstNode ln2 = Lst_MemberS(s->parent->cp, s);
                if (ln2 != NULL)



Home | Main Index | Thread Index | Old Index