Module Name: src Committed By: rillig Date: Sat Apr 27 17:33:47 UTC 2024
Modified Files: src/usr.bin/make: arch.c lst.c lst.h main.c meta.c parse.c targ.c Log Message: make: simplify freeing of lists To generate a diff of this commit: cvs rdiff -u -r1.215 -r1.216 src/usr.bin/make/arch.c cvs rdiff -u -r1.107 -r1.108 src/usr.bin/make/lst.c cvs rdiff -u -r1.104 -r1.105 src/usr.bin/make/lst.h cvs rdiff -u -r1.612 -r1.613 src/usr.bin/make/main.c cvs rdiff -u -r1.207 -r1.208 src/usr.bin/make/meta.c cvs rdiff -u -r1.721 -r1.722 src/usr.bin/make/parse.c cvs rdiff -u -r1.180 -r1.181 src/usr.bin/make/targ.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/arch.c diff -u src/usr.bin/make/arch.c:1.215 src/usr.bin/make/arch.c:1.216 --- src/usr.bin/make/arch.c:1.215 Wed Feb 7 06:43:02 2024 +++ src/usr.bin/make/arch.c Sat Apr 27 17:33:46 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: arch.c,v 1.215 2024/02/07 06:43:02 rillig Exp $ */ +/* $NetBSD: arch.c,v 1.216 2024/04/27 17:33:46 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -126,7 +126,7 @@ #include "config.h" /* "@(#)arch.c 8.2 (Berkeley) 1/2/94" */ -MAKE_RCSID("$NetBSD: arch.c,v 1.215 2024/02/07 06:43:02 rillig Exp $"); +MAKE_RCSID("$NetBSD: arch.c,v 1.216 2024/04/27 17:33:46 rillig Exp $"); typedef struct List ArchList; typedef struct ListNode ArchListNode; @@ -151,9 +151,8 @@ static int ArchSVR4Entry(Arch *, char *, #ifdef CLEANUP static void -ArchFree(void *ap) +ArchFree(Arch *a) { - Arch *a = ap; HashIter hi; /* Free memory from hash entries */ @@ -1070,7 +1069,11 @@ void Arch_End(void) { #ifdef CLEANUP - Lst_DoneCall(&archives, ArchFree); + ArchListNode *ln; + + for (ln = archives.first; ln != NULL; ln = ln->next) + ArchFree(ln->datum); + Lst_Done(&archives); #endif } Index: src/usr.bin/make/lst.c diff -u src/usr.bin/make/lst.c:1.107 src/usr.bin/make/lst.c:1.108 --- src/usr.bin/make/lst.c:1.107 Fri Dec 29 20:43:58 2023 +++ src/usr.bin/make/lst.c Sat Apr 27 17:33:46 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: lst.c,v 1.107 2023/12/29 20:43:58 rillig Exp $ */ +/* $NetBSD: lst.c,v 1.108 2024/04/27 17:33:46 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -34,7 +34,7 @@ #include "make.h" -MAKE_RCSID("$NetBSD: lst.c,v 1.107 2023/12/29 20:43:58 rillig Exp $"); +MAKE_RCSID("$NetBSD: lst.c,v 1.108 2024/04/27 17:33:46 rillig Exp $"); static ListNode * LstNodeNew(ListNode *prev, ListNode *next, void *datum) @@ -60,13 +60,13 @@ Lst_Done(List *list) } void -Lst_DoneCall(List *list, LstFreeProc freeProc) +Lst_DoneFree(List *list) { ListNode *ln, *next; for (ln = list->first; ln != NULL; ln = next) { next = ln->next; - freeProc(ln->datum); + free(ln->datum); free(ln); } } Index: src/usr.bin/make/lst.h diff -u src/usr.bin/make/lst.h:1.104 src/usr.bin/make/lst.h:1.105 --- src/usr.bin/make/lst.h:1.104 Fri Dec 29 20:43:58 2023 +++ src/usr.bin/make/lst.h Sat Apr 27 17:33:46 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: lst.h,v 1.104 2023/12/29 20:43:58 rillig Exp $ */ +/* $NetBSD: lst.h,v 1.105 2024/04/27 17:33:46 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -98,13 +98,10 @@ struct List { ListNode *last; }; -/* Free the datum of a node, called before freeing the node itself. */ -typedef void LstFreeProc(void *); - -/* Free the list nodes, but not the list itself. */ +/* Free the list nodes. */ void Lst_Done(List *); -/* Free the list nodes, freeing the node data using the given function. */ -void Lst_DoneCall(List *, LstFreeProc); +/* Free the list nodes, as well as each node's datum. */ +void Lst_DoneFree(List *); #define LST_INIT { NULL, NULL } Index: src/usr.bin/make/main.c diff -u src/usr.bin/make/main.c:1.612 src/usr.bin/make/main.c:1.613 --- src/usr.bin/make/main.c:1.612 Sun Mar 10 02:53:37 2024 +++ src/usr.bin/make/main.c Sat Apr 27 17:33:46 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.612 2024/03/10 02:53:37 sjg Exp $ */ +/* $NetBSD: main.c,v 1.613 2024/04/27 17:33:46 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -111,7 +111,7 @@ #include "trace.h" /* "@(#)main.c 8.3 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: main.c,v 1.612 2024/03/10 02:53:37 sjg Exp $"); +MAKE_RCSID("$NetBSD: main.c,v 1.613 2024/04/27 17:33:46 rillig Exp $"); #if defined(MAKE_NATIVE) __COPYRIGHT("@(#) Copyright (c) 1988, 1989, 1990, 1993 " "The Regents of the University of California. " @@ -1199,7 +1199,7 @@ ReadBuiltinRules(void) Fatal("%s: cannot open %s.", progname, (const char *)sysMkFiles.first->datum); - Lst_DoneCall(&sysMkFiles, free); + Lst_DoneFree(&sysMkFiles); } static void @@ -1564,9 +1564,9 @@ static void main_CleanUp(void) { #ifdef CLEANUP - Lst_DoneCall(&opts.variables, free); - Lst_DoneCall(&opts.makefiles, free); - Lst_DoneCall(&opts.create, free); + Lst_DoneFree(&opts.variables); + Lst_DoneFree(&opts.makefiles); + Lst_DoneFree(&opts.create); #endif if (DEBUG(GRAPH2)) Index: src/usr.bin/make/meta.c diff -u src/usr.bin/make/meta.c:1.207 src/usr.bin/make/meta.c:1.208 --- src/usr.bin/make/meta.c:1.207 Sun Dec 17 09:02:26 2023 +++ src/usr.bin/make/meta.c Sat Apr 27 17:33:46 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: meta.c,v 1.207 2023/12/17 09:02:26 rillig Exp $ */ +/* $NetBSD: meta.c,v 1.208 2024/04/27 17:33:46 rillig Exp $ */ /* * Implement 'meta' mode. @@ -1595,7 +1595,7 @@ meta_oodate(GNode *gn, bool oodate) } } - Lst_DoneCall(&missingFiles, free); + Lst_DoneFree(&missingFiles); if (oodate && needOODATE) { /* Index: src/usr.bin/make/parse.c diff -u src/usr.bin/make/parse.c:1.721 src/usr.bin/make/parse.c:1.722 --- src/usr.bin/make/parse.c:1.721 Tue Apr 23 22:51:28 2024 +++ src/usr.bin/make/parse.c Sat Apr 27 17:33:46 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: parse.c,v 1.721 2024/04/23 22:51:28 rillig Exp $ */ +/* $NetBSD: parse.c,v 1.722 2024/04/27 17:33:46 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -105,7 +105,7 @@ #include "pathnames.h" /* "@(#)parse.c 8.3 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: parse.c,v 1.721 2024/04/23 22:51:28 rillig Exp $"); +MAKE_RCSID("$NetBSD: parse.c,v 1.722 2024/04/27 17:33:46 rillig Exp $"); /* Detects a multiple-inclusion guard in a makefile. */ typedef enum { @@ -2966,7 +2966,7 @@ Parse_End(void) #ifdef CLEANUP HashIter hi; - Lst_DoneCall(&targCmds, free); + Lst_DoneFree(&targCmds); assert(targets == NULL); SearchPath_Free(defSysIncPath); SearchPath_Free(sysIncPath); Index: src/usr.bin/make/targ.c diff -u src/usr.bin/make/targ.c:1.180 src/usr.bin/make/targ.c:1.181 --- src/usr.bin/make/targ.c:1.180 Sun Mar 10 02:53:37 2024 +++ src/usr.bin/make/targ.c Sat Apr 27 17:33:47 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: targ.c,v 1.180 2024/03/10 02:53:37 sjg Exp $ */ +/* $NetBSD: targ.c,v 1.181 2024/04/27 17:33:47 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -107,7 +107,7 @@ #include "dir.h" /* "@(#)targ.c 8.2 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: targ.c,v 1.180 2024/03/10 02:53:37 sjg Exp $"); +MAKE_RCSID("$NetBSD: targ.c,v 1.181 2024/04/27 17:33:47 rillig Exp $"); /* * All target nodes that appeared on the left-hand side of one of the @@ -119,7 +119,7 @@ static HashTable allTargetsByName; #ifdef CLEANUP static GNodeList allNodes = LST_INIT; -static void GNode_Free(void *); +static void GNode_Free(GNode *); #endif void @@ -131,11 +131,16 @@ Targ_Init(void) void Targ_End(void) { +#ifdef CLEANUP + GNodeListNode *ln; +#endif Targ_Stats(); #ifdef CLEANUP Lst_Done(&allTargets); HashTable_Done(&allTargetsByName); - Lst_DoneCall(&allNodes, GNode_Free); + for (ln = allNodes.first; ln != NULL; ln = ln->next) + GNode_Free(ln->datum); + Lst_Done(&allNodes); #endif } @@ -212,10 +217,8 @@ GNode_New(const char *name) #ifdef CLEANUP static void -GNode_Free(void *gnp) +GNode_Free(GNode *gn) { - GNode *gn = gnp; - free(gn->name); free(gn->uname); free(gn->path);