Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/make make(1): rename local variable in Var_Parse



details:   https://anonhg.NetBSD.org/src/rev/8a708cde9f6e
branches:  trunk
changeset: 1015976:8a708cde9f6e
user:      rillig <rillig%NetBSD.org@localhost>
date:      Fri Nov 06 00:29:50 2020 +0000

description:
make(1): rename local variable in Var_Parse

diffstat:

 usr.bin/make/var.c |  48 +++++++++++++++++++++---------------------------
 1 files changed, 21 insertions(+), 27 deletions(-)

diffs (119 lines):

diff -r 8f2b5cd98820 -r 8a708cde9f6e usr.bin/make/var.c
--- a/usr.bin/make/var.c        Fri Nov 06 00:05:18 2020 +0000
+++ b/usr.bin/make/var.c        Fri Nov 06 00:29:50 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: var.c,v 1.667 2020/11/06 00:05:18 rillig Exp $ */
+/*     $NetBSD: var.c,v 1.668 2020/11/06 00:29:50 rillig Exp $ */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -130,7 +130,7 @@
 #include "metachar.h"
 
 /*     "@(#)var.c      8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: var.c,v 1.667 2020/11/06 00:05:18 rillig Exp $");
+MAKE_RCSID("$NetBSD: var.c,v 1.668 2020/11/06 00:29:50 rillig Exp $");
 
 #define VAR_DEBUG1(fmt, arg1) DEBUG1(VAR, fmt, arg1)
 #define VAR_DEBUG2(fmt, arg1, arg2) DEBUG2(VAR, fmt, arg1, arg2)
@@ -3828,7 +3828,7 @@
                                 * result is just the expression, unaltered */
     const char *extramodifiers;
     Var *v;
-    char *nstr;
+    char *value;
     char eflags_str[VarEvalFlags_ToStringSize];
     VarExprFlags exprFlags = 0;
 
@@ -3863,25 +3863,19 @@
     if (v->flags & VAR_IN_USE)
        Fatal("Variable %s is recursive.", v->name);
 
-    /*
-     * Before doing any modification, we have to make sure the value
-     * has been fully expanded. If it looks like recursion might be
-     * necessary (there's a dollar sign somewhere in the variable's value)
-     * we just call Var_Subst to do any other substitutions that are
-     * necessary. Note that the value returned by Var_Subst will have
-     * been dynamically-allocated, so it will need freeing when we
-     * return.
-     */
-    nstr = Buf_GetAll(&v->val, NULL);
-    if (strchr(nstr, '$') != NULL && (eflags & VARE_WANTRES)) {
+    value = Buf_GetAll(&v->val, NULL);
+
+    /* Before applying any modifiers, expand any nested expressions from the
+     * variable value. */
+    if (strchr(value, '$') != NULL && (eflags & VARE_WANTRES)) {
        VarEvalFlags nested_eflags = eflags;
        if (DEBUG(LINT))
            nested_eflags &= ~(unsigned)VARE_UNDEFERR;
        v->flags |= VAR_IN_USE;
-       (void)Var_Subst(nstr, ctxt, nested_eflags, &nstr);
+       (void)Var_Subst(value, ctxt, nested_eflags, &value);
        v->flags &= ~(unsigned)VAR_IN_USE;
        /* TODO: handle errors */
-       *out_val_freeIt = nstr;
+       *out_val_freeIt = value;
     }
 
     if (haveModifier || extramodifiers != NULL) {
@@ -3890,16 +3884,16 @@
        extraFree = NULL;
        if (extramodifiers != NULL) {
            const char *em = extramodifiers;
-           nstr = ApplyModifiers(&em, nstr, '\0', '\0',
-                                 v, &exprFlags, ctxt, eflags, &extraFree);
+           value = ApplyModifiers(&em, value, '\0', '\0',
+                                  v, &exprFlags, ctxt, eflags, &extraFree);
        }
 
        if (haveModifier) {
            /* Skip initial colon. */
            p++;
 
-           nstr = ApplyModifiers(&p, nstr, startc, endc,
-                                 v, &exprFlags, ctxt, eflags, out_val_freeIt);
+           value = ApplyModifiers(&p, value, startc, endc,
+                                  v, &exprFlags, ctxt, eflags, out_val_freeIt);
            free(extraFree);
        } else {
            *out_val_freeIt = extraFree;
@@ -3914,9 +3908,9 @@
     if (v->flags & VAR_FROM_ENV) {
        /* Free the environment variable now since we own it,
         * but don't free the variable value if it will be returned. */
-       Boolean keepValue = nstr == Buf_GetAll(&v->val, NULL);
+       Boolean keepValue = value == Buf_GetAll(&v->val, NULL);
        if (keepValue)
-           *out_val_freeIt = nstr;
+           *out_val_freeIt = value;
        (void)VarFreeEnv(v, !keepValue);
 
     } else if (exprFlags & VEF_UNDEF) {
@@ -3926,20 +3920,20 @@
                *out_val_freeIt = NULL;
            }
            if (dynamic) {
-               nstr = bmake_strsedup(start, p);
-               *out_val_freeIt = nstr;
+               value = bmake_strsedup(start, p);
+               *out_val_freeIt = value;
            } else {
                /* The expression is still undefined, therefore discard the
                 * actual value and return an error marker instead. */
-               nstr = (eflags & VARE_UNDEFERR) ? var_Error : varUndefined;
+               value = (eflags & VARE_UNDEFERR) ? var_Error : varUndefined;
            }
        }
-       if (nstr != Buf_GetAll(&v->val, NULL))
+       if (value != Buf_GetAll(&v->val, NULL))
            Buf_Destroy(&v->val, TRUE);
        free(v->name_freeIt);
        free(v);
     }
-    *out_val = nstr;
+    *out_val = value;
     return VPR_UNKNOWN;
 }
 



Home | Main Index | Thread Index | Old Index