Module Name:    src
Committed By:   rillig
Date:           Sun Oct  4 21:41:44 UTC 2020

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

Log Message:
make(1): rename local variable in VarAssign_Eval

The value to be freed is not always evalue.  In the case of VAR_SUBST,
it will be the output of the command, not the command itself.


To generate a diff of this commit:
cvs rdiff -u -r1.360 -r1.361 src/usr.bin/make/parse.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/parse.c
diff -u src/usr.bin/make/parse.c:1.360 src/usr.bin/make/parse.c:1.361
--- src/usr.bin/make/parse.c:1.360	Sun Oct  4 21:08:37 2020
+++ src/usr.bin/make/parse.c	Sun Oct  4 21:41:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: parse.c,v 1.360 2020/10/04 21:08:37 rillig Exp $	*/
+/*	$NetBSD: parse.c,v 1.361 2020/10/04 21:41:44 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -131,7 +131,7 @@
 #include "pathnames.h"
 
 /*	"@(#)parse.c	8.3 (Berkeley) 3/19/94"	*/
-MAKE_RCSID("$NetBSD: parse.c,v 1.360 2020/10/04 21:08:37 rillig Exp $");
+MAKE_RCSID("$NetBSD: parse.c,v 1.361 2020/10/04 21:41:44 rillig Exp $");
 
 /* types and constants */
 
@@ -1814,11 +1814,12 @@ VarAssign_Eval(VarAssign *var, GNode *ct
     const char *name = var->varname;
     const VarAssignOp type = var->op;
     const char *avalue = uvalue;
-    char *evalue = NULL;
+    void *avalue_freeIt = NULL;
 
     if (type == VAR_APPEND) {
 	Var_Append(name, uvalue, ctxt);
     } else if (type == VAR_SUBST) {
+        char *evalue;
 	/*
 	 * Allow variables in the old value to be undefined, but leave their
 	 * expressions alone -- this is done by forcing oldVars to be false.
@@ -1845,6 +1846,7 @@ VarAssign_Eval(VarAssign *var, GNode *ct
 	/* TODO: handle errors */
 	oldVars = oldOldVars;
 	avalue = evalue;
+	avalue_freeIt = evalue;
 
 	Var_Set(name, avalue, ctxt);
     } else if (type == VAR_SHELL) {
@@ -1852,6 +1854,7 @@ VarAssign_Eval(VarAssign *var, GNode *ct
 	const char *error;
 
 	if (strchr(uvalue, '$') != NULL) {
+	    char *evalue;
 	    /*
 	     * There's a dollar sign in the command, so perform variable
 	     * expansion on the whole thing. The resulting string will need
@@ -1861,6 +1864,7 @@ VarAssign_Eval(VarAssign *var, GNode *ct
 			    &evalue);
 	    /* TODO: handle errors */
 	    avalue = evalue;
+	    avalue_freeIt = evalue;
 	}
 
 	res = Cmd_Exec(avalue, &error);
@@ -1880,7 +1884,7 @@ VarAssign_Eval(VarAssign *var, GNode *ct
     }
 
     *out_avalue = avalue;
-    *out_avalue_freeIt = evalue;
+    *out_avalue_freeIt = avalue_freeIt;
     return TRUE;
 }
 

Reply via email to