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;
}