Module Name:    src
Committed By:   rillig
Date:           Mon Feb 22 22:55:43 UTC 2021

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

Log Message:
make: remove boolean parameter and return type from VarFreeEnv

There was only a single case where this parameter was false.  Inline
that case.  That was the only case that needed the return value, so
remove that as well.


To generate a diff of this commit:
cvs rdiff -u -r1.836 -r1.837 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/var.c
diff -u src/usr.bin/make/var.c:1.836 src/usr.bin/make/var.c:1.837
--- src/usr.bin/make/var.c:1.836	Mon Feb 22 22:34:04 2021
+++ src/usr.bin/make/var.c	Mon Feb 22 22:55:43 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: var.c,v 1.836 2021/02/22 22:34:04 rillig Exp $	*/
+/*	$NetBSD: var.c,v 1.837 2021/02/22 22:55:43 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.836 2021/02/22 22:34:04 rillig Exp $");
+MAKE_RCSID("$NetBSD: var.c,v 1.837 2021/02/22 22:55:43 rillig Exp $");
 
 typedef enum VarFlags {
 	VFL_NONE	= 0,
@@ -462,28 +462,21 @@ VarFind(const char *name, GNode *scope, 
 }
 
 /*
- * If the variable is an environment variable, free it.
- *
- * Input:
- *	v		the variable
- *	freeValue	true if the variable value should be freed as well
+ * If the variable is an environment variable, free it, including its value.
  *
  * Results:
- *	TRUE if it is an environment variable, FALSE otherwise.
+ *	TRUE if it was an environment variable,
+ *	FALSE if it is still a regular variable.
  */
-static Boolean
-VarFreeEnv(Var *v, Boolean freeValue)
+static void
+VarFreeEnv(Var *v)
 {
 	if (!(v->flags & VFL_FROM_ENV))
-		return FALSE;
+		return;
 
 	FStr_Done(&v->name);
-	if (freeValue)
-		Buf_Done(&v->val);
-	else
-		Buf_DoneData(&v->val);
+	Buf_Done(&v->val);
 	free(v);
-	return TRUE;
 }
 
 /* Add a new variable of the given name and value to the given scope. */
@@ -952,7 +945,7 @@ ExistsInCmdline(const char *name, const 
 		return TRUE;
 	}
 
-	VarFreeEnv(v, TRUE);
+	VarFreeEnv(v);
 	return FALSE;
 }
 
@@ -1031,7 +1024,7 @@ Var_SetWithFlags(GNode *scope, const cha
 		save_dollars = ParseBoolean(val, save_dollars);
 
 	if (v != NULL)
-		VarFreeEnv(v, TRUE);
+		VarFreeEnv(v);
 }
 
 /* See Var_Set for documentation. */
@@ -1204,7 +1197,7 @@ Var_Exists(GNode *scope, const char *nam
 	if (v == NULL)
 		return FALSE;
 
-	(void)VarFreeEnv(v, TRUE);
+	VarFreeEnv(v);
 	return TRUE;
 }
 
@@ -1255,10 +1248,14 @@ Var_Value(GNode *scope, const char *name
 	if (v == NULL)
 		return FStr_InitRefer(NULL);
 
-	value = v->val.data;
-	return VarFreeEnv(v, FALSE)
-	    ? FStr_InitOwn(value)
-	    : FStr_InitRefer(value);
+	if (!(v->flags & VFL_FROM_ENV))
+		return FStr_InitRefer(v->val.data);
+
+	/* Since environment variables are short-lived, free it now. */
+	FStr_Done(&v->name);
+	value = Buf_DoneData(&v->val);
+	free(v);
+	return FStr_InitOwn(value);
 }
 
 /*
@@ -3322,7 +3319,7 @@ ok:
 		if (gv == NULL)
 			scope = SCOPE_GLOBAL;
 		else
-			VarFreeEnv(gv, TRUE);
+			VarFreeEnv(gv);
 	}
 
 	switch (op[0]) {

Reply via email to