Module Name: src Committed By: rillig Date: Mon Dec 13 00:33:33 UTC 2021
Modified Files: src/usr.bin/make: nonints.h suff.c var.c Log Message: make: fix memory leak when evaluating ${.SUFFIX} (since yesterday) To generate a diff of this commit: cvs rdiff -u -r1.217 -r1.218 src/usr.bin/make/nonints.h cvs rdiff -u -r1.357 -r1.358 src/usr.bin/make/suff.c cvs rdiff -u -r1.973 -r1.974 src/usr.bin/make/var.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/nonints.h diff -u src/usr.bin/make/nonints.h:1.217 src/usr.bin/make/nonints.h:1.218 --- src/usr.bin/make/nonints.h:1.217 Sun Dec 12 20:45:48 2021 +++ src/usr.bin/make/nonints.h Mon Dec 13 00:33:33 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: nonints.h,v 1.217 2021/12/12 20:45:48 sjg Exp $ */ +/* $NetBSD: nonints.h,v 1.218 2021/12/13 00:33:33 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -184,7 +184,7 @@ void Suff_FindDeps(GNode *); SearchPath *Suff_FindPath(GNode *); void Suff_SetNull(const char *); void Suff_PrintAll(void); -const char *Suff_NamesStr(void); +char *Suff_NamesStr(void); /* targ.c */ void Targ_Init(void); Index: src/usr.bin/make/suff.c diff -u src/usr.bin/make/suff.c:1.357 src/usr.bin/make/suff.c:1.358 --- src/usr.bin/make/suff.c:1.357 Sun Dec 12 20:45:48 2021 +++ src/usr.bin/make/suff.c Mon Dec 13 00:33:33 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: suff.c,v 1.357 2021/12/12 20:45:48 sjg Exp $ */ +/* $NetBSD: suff.c,v 1.358 2021/12/13 00:33:33 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -115,7 +115,7 @@ #include "dir.h" /* "@(#)suff.c 8.4 (Berkeley) 3/21/94" */ -MAKE_RCSID("$NetBSD: suff.c,v 1.357 2021/12/12 20:45:48 sjg Exp $"); +MAKE_RCSID("$NetBSD: suff.c,v 1.358 2021/12/13 00:33:33 rillig Exp $"); typedef List SuffixList; typedef ListNode SuffixListNode; @@ -2178,7 +2178,7 @@ Suff_PrintAll(void) } } -const char * +char * Suff_NamesStr(void) { Buffer buf; Index: src/usr.bin/make/var.c diff -u src/usr.bin/make/var.c:1.973 src/usr.bin/make/var.c:1.974 --- src/usr.bin/make/var.c:1.973 Sun Dec 12 20:45:48 2021 +++ src/usr.bin/make/var.c Mon Dec 13 00:33:33 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: var.c,v 1.973 2021/12/12 20:45:48 sjg Exp $ */ +/* $NetBSD: var.c,v 1.974 2021/12/13 00:33:33 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -140,7 +140,7 @@ #include "metachar.h" /* "@(#)var.c 8.3 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: var.c,v 1.973 2021/12/12 20:45:48 sjg Exp $"); +MAKE_RCSID("$NetBSD: var.c,v 1.974 2021/12/13 00:33:33 rillig Exp $"); /* * Variables are defined using one of the VAR=value assignments. Their @@ -4405,14 +4405,12 @@ ParseVarnameLong( /* At this point, p points just after the variable name, * either at ':' or at endc. */ - if (v == NULL) { - if (Substring_Equals(name, ".SUFFIXES")) - v = VarNew(Substring_Str(name), - Suff_NamesStr(), false, true); - else - v = FindLocalLegacyVar(name, scope, - out_true_extraModifiers); - } + if (v == NULL && Substring_Equals(name, ".SUFFIXES")) { + char *suffixes = Suff_NamesStr(); + v = VarNew(Substring_Str(name), suffixes, false, true); + free(suffixes); + } else if (v == NULL) + v = FindLocalLegacyVar(name, scope, out_true_extraModifiers); if (v == NULL) { /*