Module Name:    src
Committed By:   sjg
Date:           Sun Dec 12 16:41:39 UTC 2021

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

Log Message:
ParseVarnameLong: minimize calls to LazyBuf_Get

Reviewed by: rillig


To generate a diff of this commit:
cvs rdiff -u -r1.971 -r1.972 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.971 src/usr.bin/make/var.c:1.972
--- src/usr.bin/make/var.c:1.971	Sat Dec 11 10:41:31 2021
+++ src/usr.bin/make/var.c	Sun Dec 12 16:41:39 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: var.c,v 1.971 2021/12/11 10:41:31 rillig Exp $	*/
+/*	$NetBSD: var.c,v 1.972 2021/12/12 16:41:39 sjg 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.971 2021/12/11 10:41:31 rillig Exp $");
+MAKE_RCSID("$NetBSD: var.c,v 1.972 2021/12/12 16:41:39 sjg Exp $");
 
 /*
  * Variables are defined using one of the VAR=value assignments.  Their
@@ -4367,6 +4367,7 @@ ParseVarnameLong(
 )
 {
 	LazyBuf varname;
+	Substring name;
 	Var *v;
 	bool haveModifier;
 	bool dynamic = false;
@@ -4377,13 +4378,13 @@ ParseVarnameLong(
 
 	p += 2;			/* skip "${" or "$(" or "y(" */
 	ParseVarname(&p, startc, endc, scope, emode, &varname);
+	name = LazyBuf_Get(&varname);
 
 	if (*p == ':') {
 		haveModifier = true;
 	} else if (*p == endc) {
 		haveModifier = false;
 	} else {
-		Substring name = LazyBuf_Get(&varname);
 		Parse_Error(PARSE_FATAL, "Unclosed variable \"%.*s\"",
 		    (int)Substring_Length(name), name.start);
 		LazyBuf_Done(&varname);
@@ -4393,13 +4394,13 @@ ParseVarnameLong(
 		return false;
 	}
 
-	v = VarFindSubstring(LazyBuf_Get(&varname), scope, true);
+	v = VarFindSubstring(name, scope, true);
 
 	/* At this point, p points just after the variable name,
 	 * either at ':' or at endc. */
 
 	if (v == NULL) {
-		v = FindLocalLegacyVar(LazyBuf_Get(&varname), scope,
+		v = FindLocalLegacyVar(name, scope,
 		    out_true_extraModifiers);
 	}
 
@@ -4408,14 +4409,14 @@ ParseVarnameLong(
 		 * Defer expansion of dynamic variables if they appear in
 		 * non-local scope since they are not defined there.
 		 */
-		dynamic = VarnameIsDynamic(LazyBuf_Get(&varname)) &&
+		dynamic = VarnameIsDynamic(name) &&
 			  (scope == SCOPE_CMDLINE || scope == SCOPE_GLOBAL);
 
 		if (!haveModifier) {
 			p++;	/* skip endc */
 			*out_false_pp = p;
 			*out_false_res = EvalUndefined(dynamic, start, p,
-			    LazyBuf_Get(&varname), emode, out_false_val);
+			    name, emode, out_false_val);
 			return false;
 		}
 

Reply via email to