Mon Jul 27 23:24:55 2020 UTC ()
make(1): rename ApplyModifiersState.cp to next

The name "next" is more descriptive than a mere "cp".  It's easy to look
up the type of the variable, but not so easy to guess the purpose of the
variable, therefore the new name concentrates on the purpose.


(rillig)
diff -r1.347 -r1.348 src/usr.bin/make/var.c

cvs diff -r1.347 -r1.348 src/usr.bin/make/var.c (expand / switch to context diff)
--- src/usr.bin/make/var.c 2020/07/27 23:04:18 1.347
+++ src/usr.bin/make/var.c 2020/07/27 23:24:55 1.348
@@ -1,4 +1,4 @@
-/*	$NetBSD: var.c,v 1.347 2020/07/27 23:04:18 rillig Exp $	*/
+/*	$NetBSD: var.c,v 1.348 2020/07/27 23:24:55 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
  */
 
 #ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: var.c,v 1.347 2020/07/27 23:04:18 rillig Exp $";
+static char rcsid[] = "$NetBSD: var.c,v 1.348 2020/07/27 23:24:55 rillig Exp $";
 #else
 #include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)var.c	8.3 (Berkeley) 3/19/94";
 #else
-__RCSID("$NetBSD: var.c,v 1.347 2020/07/27 23:04:18 rillig Exp $");
+__RCSID("$NetBSD: var.c,v 1.348 2020/07/27 23:24:55 rillig Exp $");
 #endif
 #endif /* not lint */
 #endif
@@ -2046,7 +2046,7 @@
 
     /* read-write */
     char *nstr;
-    const char *cp;		/* The position where parsing continues
+    const char *next;		/* The position where parsing continues
 				 * after the current modifier. */
     char termc;			/* Character which terminated scan */
     char missing_delim;		/* For error reporting */
@@ -2085,23 +2085,23 @@
     ModifyWord_LoopArgs args;
 
     args.ctx = st->ctxt;
-    st->cp = mod + 1;
+    st->next = mod + 1;
     char delim = '@';
-    args.tvar = ParseModifierPart(&st->cp, delim, st->eflags & ~VARE_WANTRES,
+    args.tvar = ParseModifierPart(&st->next, delim, st->eflags & ~VARE_WANTRES,
 				  st->ctxt, NULL, NULL, NULL);
     if (args.tvar == NULL) {
 	st->missing_delim = delim;
 	return FALSE;
     }
 
-    args.str = ParseModifierPart(&st->cp, delim, st->eflags & ~VARE_WANTRES,
+    args.str = ParseModifierPart(&st->next, delim, st->eflags & ~VARE_WANTRES,
 				 st->ctxt, NULL, NULL, NULL);
     if (args.str == NULL) {
 	st->missing_delim = delim;
 	return FALSE;
     }
 
-    st->termc = *st->cp;
+    st->termc = *st->next;
 
     args.eflags = st->eflags & (VARE_UNDEFERR | VARE_WANTRES);
     int prev_sep = st->sep;
@@ -2167,8 +2167,8 @@
 	}
     }
 
-    st->cp = p;
-    st->termc = *st->cp;
+    st->next = p;
+    st->termc = *st->next;
 
     if (st->v->flags & VAR_JUNK)
 	st->v->flags |= VAR_KEEP;
@@ -2185,7 +2185,7 @@
 ApplyModifier_Gmtime(const char *mod, ApplyModifiersState *st)
 {
     if (!ModMatchEq(mod, "gmtime", st->endc)) {
-	st->cp = mod + 1;
+	st->next = mod + 1;
 	return FALSE;
     }
 
@@ -2193,13 +2193,13 @@
     if (mod[6] == '=') {
 	char *ep;
 	utc = strtoul(mod + 7, &ep, 10);
-	st->cp = ep;
+	st->next = ep;
     } else {
 	utc = 0;
-	st->cp = mod + 6;
+	st->next = mod + 6;
     }
     st->newStr = VarStrftime(st->nstr, 1, utc);
-    st->termc = *st->cp;
+    st->termc = *st->next;
     return TRUE;
 }
 
@@ -2208,7 +2208,7 @@
 ApplyModifier_Localtime(const char *mod, ApplyModifiersState *st)
 {
     if (!ModMatchEq(mod, "localtime", st->endc)) {
-	st->cp = mod + 1;
+	st->next = mod + 1;
 	return FALSE;
     }
 
@@ -2216,13 +2216,13 @@
     if (mod[9] == '=') {
 	char *ep;
 	utc = strtoul(mod + 10, &ep, 10);
-	st->cp = ep;
+	st->next = ep;
     } else {
 	utc = 0;
-	st->cp = mod + 9;
+	st->next = mod + 9;
     }
     st->newStr = VarStrftime(st->nstr, 0, utc);
-    st->termc = *st->cp;
+    st->termc = *st->next;
     return TRUE;
 }
 
@@ -2231,13 +2231,13 @@
 ApplyModifier_Hash(const char *mod, ApplyModifiersState *st)
 {
     if (!ModMatch(mod, "hash", st->endc)) {
-	st->cp = mod + 1;
+	st->next = mod + 1;
 	return FALSE;
     }
 
     st->newStr = VarHash(st->nstr);
-    st->cp = mod + 4;
-    st->termc = *st->cp;
+    st->next = mod + 4;
+    st->termc = *st->next;
     return TRUE;
 }
 
@@ -2257,17 +2257,17 @@
     }
     if (!st->newStr)
 	st->newStr = bmake_strdup(st->v->name);
-    st->cp = mod + 1;
-    st->termc = *st->cp;
+    st->next = mod + 1;
+    st->termc = *st->next;
 }
 
 /* :!cmd! */
 static Boolean
 ApplyModifier_Exclam(const char *mod, ApplyModifiersState *st)
 {
-    st->cp = mod + 1;
+    st->next = mod + 1;
     char delim = '!';
-    char *cmd = ParseModifierPart(&st->cp, delim, st->eflags, st->ctxt,
+    char *cmd = ParseModifierPart(&st->next, delim, st->eflags, st->ctxt,
 				  NULL, NULL, NULL);
     if (cmd == NULL) {
 	st->missing_delim = delim;
@@ -2284,7 +2284,7 @@
     if (emsg)
 	Error(emsg, st->nstr);
 
-    st->termc = *st->cp;
+    st->termc = *st->next;
     if (st->v->flags & VAR_JUNK)
 	st->v->flags |= VAR_KEEP;
     return TRUE;
@@ -2295,7 +2295,7 @@
 ApplyModifier_Range(const char *mod, ApplyModifiersState *st)
 {
     if (!ModMatchEq(mod, "range", st->endc)) {
-	st->cp = mod + 1;
+	st->next = mod + 1;
 	return FALSE;
     }
 
@@ -2303,13 +2303,13 @@
     if (mod[5] == '=') {
 	char *ep;
 	n = strtoul(mod + 6, &ep, 10);
-	st->cp = ep;
+	st->next = ep;
     } else {
 	n = 0;
-	st->cp = mod + 5;
+	st->next = mod + 5;
     }
     st->newStr = VarRange(st->nstr, n);
-    st->termc = *st->cp;
+    st->termc = *st->next;
     return TRUE;
 }
 
@@ -2344,9 +2344,9 @@
 		break;
 	}
     }
-    st->cp = p;
-    st->termc = *st->cp;
-    const char *endpat = st->cp;
+    st->next = p;
+    st->termc = *st->next;
+    const char *endpat = st->next;
 
     char *pattern;
     if (copy) {
@@ -2397,19 +2397,19 @@
     Boolean oneBigWord = st->oneBigWord;
     char delim = mod[1];
 
-    st->cp = mod + 2;
+    st->next = mod + 2;
 
     /*
      * If pattern begins with '^', it is anchored to the
      * start of the word -- skip over it and flag pattern.
      */
     args.pflags = 0;
-    if (*st->cp == '^') {
+    if (*st->next == '^') {
 	args.pflags |= VARP_ANCHOR_START;
-	st->cp++;
+	st->next++;
     }
 
-    char *lhs = ParseModifierPart(&st->cp, delim, st->eflags, st->ctxt,
+    char *lhs = ParseModifierPart(&st->next, delim, st->eflags, st->ctxt,
 				  &args.lhsLen, &args.pflags, NULL);
     if (lhs == NULL) {
 	st->missing_delim = delim;
@@ -2417,7 +2417,7 @@
     }
     args.lhs = lhs;
 
-    char *rhs = ParseModifierPart(&st->cp, delim, st->eflags, st->ctxt,
+    char *rhs = ParseModifierPart(&st->next, delim, st->eflags, st->ctxt,
 				  &args.rhsLen, NULL, &args);
     if (rhs == NULL) {
 	st->missing_delim = delim;
@@ -2430,8 +2430,8 @@
      * delimiter, substitution is global and is marked that
      * way.
      */
-    for (;; st->cp++) {
-	switch (*st->cp) {
+    for (;; st->next++) {
+	switch (*st->next) {
 	case 'g':
 	    args.pflags |= VARP_SUB_GLOBAL;
 	    continue;
@@ -2445,7 +2445,7 @@
 	break;
     }
 
-    st->termc = *st->cp;
+    st->termc = *st->next;
     st->newStr = ModifyWords(st->ctxt, st->sep, oneBigWord, st->nstr,
 			     ModifyWord_Subst, &args);
 
@@ -2466,16 +2466,16 @@
     Boolean oneBigWord = st->oneBigWord;
     char delim = mod[1];
 
-    st->cp = mod + 2;
+    st->next = mod + 2;
 
-    char *re = ParseModifierPart(&st->cp, delim, st->eflags, st->ctxt,
+    char *re = ParseModifierPart(&st->next, delim, st->eflags, st->ctxt,
 				 NULL, NULL, NULL);
     if (re == NULL) {
 	st->missing_delim = delim;
 	return FALSE;
     }
 
-    args.replace = ParseModifierPart(&st->cp, delim, st->eflags, st->ctxt,
+    args.replace = ParseModifierPart(&st->next, delim, st->eflags, st->ctxt,
 				     NULL, NULL, NULL);
     if (args.replace == NULL) {
 	free(re);
@@ -2483,8 +2483,8 @@
 	return FALSE;
     }
 
-    for (;; st->cp++) {
-	switch (*st->cp) {
+    for (;; st->next++) {
+	switch (*st->next) {
 	case 'g':
 	    args.pflags |= VARP_SUB_GLOBAL;
 	    continue;
@@ -2498,7 +2498,7 @@
 	break;
     }
 
-    st->termc = *st->cp;
+    st->termc = *st->next;
 
     int error = regcomp(&args.re, re, REG_EXTENDED);
     free(re);
@@ -2534,11 +2534,11 @@
     if (sep[0] != st->endc && (sep[1] == st->endc || sep[1] == ':')) {
 	/* ":ts<unrecognised><endc>" or ":ts<unrecognised>:" */
 	st->sep = sep[0];
-	st->cp = sep + 1;
+	st->next = sep + 1;
     } else if (sep[0] == st->endc || sep[0] == ':') {
 	/* ":ts<endc>" or ":ts:" */
 	st->sep = '\0';		/* no separator */
-	st->cp = sep;
+	st->next = sep;
     } else if (sep[0] == '\\') {
 	const char *xp = sep + 1;
 	int base = 8;		/* assume octal */
@@ -2546,11 +2546,11 @@
 	switch (sep[1]) {
 	case 'n':
 	    st->sep = '\n';
-	    st->cp = sep + 2;
+	    st->next = sep + 2;
 	    break;
 	case 't':
 	    st->sep = '\t';
-	    st->cp = sep + 2;
+	    st->next = sep + 2;
 	    break;
 	case 'x':
 	    base = 16;
@@ -2568,14 +2568,14 @@
 	    st->sep = strtoul(sep + 1 + (sep[1] == 'x'), &end, base);
 	    if (*end != ':' && *end != st->endc)
 	        return FALSE;
-	    st->cp = end;
+	    st->next = end;
 	    break;
 	}
     } else {
 	return FALSE;		/* Found ":ts<unrecognised><unrecognised>". */
     }
 
-    st->termc = *st->cp;
+    st->termc = *st->next;
     st->newStr = ModifyWords(st->ctxt, st->sep, st->oneBigWord, st->nstr,
 			     ModifyWord_Copy, NULL);
     return TRUE;
@@ -2585,7 +2585,7 @@
 static Boolean
 ApplyModifier_To(const char *mod, ApplyModifiersState *st)
 {
-    st->cp = mod + 1;	/* make sure it is set */
+    st->next = mod + 1;	/* make sure it is set */
     if (mod[1] == st->endc || mod[1] == ':')
 	return FALSE;		/* Found ":t<endc>" or ":t:". */
 
@@ -2599,25 +2599,25 @@
     if (mod[1] == 'A') {	/* absolute path */
 	st->newStr = ModifyWords(st->ctxt, st->sep, st->oneBigWord, st->nstr,
 				 ModifyWord_Realpath, NULL);
-	st->cp = mod + 2;
-	st->termc = *st->cp;
+	st->next = mod + 2;
+	st->termc = *st->next;
     } else if (mod[1] == 'u') {
 	char *dp = bmake_strdup(st->nstr);
 	for (st->newStr = dp; *dp; dp++)
 	    *dp = toupper((unsigned char)*dp);
-	st->cp = mod + 2;
-	st->termc = *st->cp;
+	st->next = mod + 2;
+	st->termc = *st->next;
     } else if (mod[1] == 'l') {
 	char *dp = bmake_strdup(st->nstr);
 	for (st->newStr = dp; *dp; dp++)
 	    *dp = tolower((unsigned char)*dp);
-	st->cp = mod + 2;
-	st->termc = *st->cp;
+	st->next = mod + 2;
+	st->termc = *st->next;
     } else if (mod[1] == 'W' || mod[1] == 'w') {
 	st->oneBigWord = mod[1] == 'W';
 	st->newStr = st->nstr;
-	st->cp = mod + 2;
-	st->termc = *st->cp;
+	st->next = mod + 2;
+	st->termc = *st->next;
     } else {
 	/* Found ":t<unrecognised>:" or ":t<unrecognised><endc>". */
 	return FALSE;
@@ -2629,17 +2629,17 @@
 static int
 ApplyModifier_Words(const char *mod, ApplyModifiersState *st)
 {
-    st->cp = mod + 1;		/* point to char after '[' */
+    st->next = mod + 1;		/* point to char after '[' */
     char delim = ']';		/* look for closing ']' */
-    char *estr = ParseModifierPart(&st->cp, delim, st->eflags, st->ctxt,
+    char *estr = ParseModifierPart(&st->next, delim, st->eflags, st->ctxt,
 				   NULL, NULL, NULL);
     if (estr == NULL) {
 	st->missing_delim = delim;
 	return 'c';
     }
 
-    /* now st->cp points just after the closing ']' */
-    if (st->cp[0] != ':' && st->cp[0] != st->endc)
+    /* now st->next points just after the closing ']' */
+    if (st->next[0] != ':' && st->next[0] != st->endc)
 	goto bad_modifier;	/* Found junk after ']' */
 
     if (estr[0] == '\0')
@@ -2719,7 +2719,7 @@
     st->newStr = VarSelectWords(st->sep, st->oneBigWord, st->nstr, first, last);
 
 ok:
-    st->termc = *st->cp;
+    st->termc = *st->next;
     free(estr);
     return 0;
 
@@ -2734,15 +2734,15 @@
 {
     char otype;
 
-    st->cp = mod + 1;	/* skip to the rest in any case */
+    st->next = mod + 1;	/* skip to the rest in any case */
     if (mod[1] == st->endc || mod[1] == ':') {
 	otype = 's';
-	st->termc = *st->cp;
+	st->termc = *st->next;
     } else if ((mod[1] == 'r' || mod[1] == 'x') &&
 	       (mod[2] == st->endc || mod[2] == ':')) {
 	otype = mod[1];
-	st->cp = mod + 2;
-	st->termc = *st->cp;
+	st->next = mod + 2;
+	st->termc = *st->next;
     } else {
 	return FALSE;
     }
@@ -2767,9 +2767,9 @@
 	    else_eflags |= VARE_WANTRES;
     }
 
-    st->cp = mod + 1;
+    st->next = mod + 1;
     char delim = ':';
-    char *then_expr = ParseModifierPart(&st->cp, delim, then_eflags, st->ctxt,
+    char *then_expr = ParseModifierPart(&st->next, delim, then_eflags, st->ctxt,
 					NULL, NULL, NULL);
     if (then_expr == NULL) {
 	st->missing_delim = delim;
@@ -2777,14 +2777,14 @@
     }
 
     delim = st->endc;		/* BRCLOSE or PRCLOSE */
-    char *else_expr = ParseModifierPart(&st->cp, delim, else_eflags, st->ctxt,
+    char *else_expr = ParseModifierPart(&st->next, delim, else_eflags, st->ctxt,
 					NULL, NULL, NULL);
     if (else_expr == NULL) {
 	st->missing_delim = delim;
 	return FALSE;
     }
 
-    st->termc = *--st->cp;
+    st->termc = *--st->next;
     if (cond_rc == COND_INVALID) {
 	Error("Bad conditional expression `%s' in %s?%s:%s",
 	    st->v->name, st->v->name, then_expr, else_expr);
@@ -2858,15 +2858,15 @@
     case '+':
     case '?':
     case '!':
-	st->cp = mod + 3;
+	st->next = mod + 3;
 	break;
     default:
-	st->cp = mod + 2;
+	st->next = mod + 2;
 	break;
     }
 
     char delim = st->startc == PROPEN ? PRCLOSE : BRCLOSE;
-    char *val = ParseModifierPart(&st->cp, delim, st->eflags, st->ctxt,
+    char *val = ParseModifierPart(&st->next, delim, st->eflags, st->ctxt,
 				  NULL, NULL, NULL);
     if (st->v->flags & VAR_JUNK) {
 	/* restore original name */
@@ -2878,7 +2878,7 @@
 	return 'c';
     }
 
-    st->termc = *--st->cp;
+    st->termc = *--st->next;
 
     if (st->eflags & VARE_WANTRES) {
 	switch (op[0]) {
@@ -2914,7 +2914,7 @@
 ApplyModifier_Remember(const char *mod, ApplyModifiersState *st)
 {
     if (!ModMatchEq(mod, "_", st->endc)) {
-	st->cp = mod + 1;
+	st->next = mod + 1;
 	return FALSE;
     }
 
@@ -2923,13 +2923,13 @@
 	char *name = bmake_strndup(mod + 2, n);
 	Var_Set(name, st->nstr, st->ctxt);
 	free(name);
-	st->cp = mod + 2 + n;
+	st->next = mod + 2 + n;
     } else {
 	Var_Set("_", st->nstr, st->ctxt);
-	st->cp = mod + 1;
+	st->next = mod + 1;
     }
     st->newStr = st->nstr;
-    st->termc = *st->cp;
+    st->termc = *st->next;
     return TRUE;
 }
 
@@ -2945,25 +2945,25 @@
      * to verify it is a SYSV-make-style translation:
      * it must be: <string1>=<string2>)
      */
-    st->cp = mod;
+    st->next = mod;
     int nest = 1;
-    while (*st->cp != '\0' && nest > 0) {
-	if (*st->cp == '=') {
+    while (*st->next != '\0' && nest > 0) {
+	if (*st->next == '=') {
 	    eqFound = TRUE;
 	    /* continue looking for st->endc */
-	} else if (*st->cp == st->endc)
+	} else if (*st->next == st->endc)
 	    nest--;
-	else if (*st->cp == st->startc)
+	else if (*st->next == st->startc)
 	    nest++;
 	if (nest > 0)
-	    st->cp++;
+	    st->next++;
     }
-    if (*st->cp != st->endc || !eqFound)
+    if (*st->next != st->endc || !eqFound)
 	return 0;
 
     char delim = '=';
-    st->cp = mod;
-    char *lhs = ParseModifierPart(&st->cp, delim, st->eflags, st->ctxt,
+    st->next = mod;
+    char *lhs = ParseModifierPart(&st->next, delim, st->eflags, st->ctxt,
 				  NULL, NULL, NULL);
     if (lhs == NULL) {
 	st->missing_delim = delim;
@@ -2971,7 +2971,7 @@
     }
 
     delim = st->endc;
-    char *rhs = ParseModifierPart(&st->cp, delim, st->eflags, st->ctxt,
+    char *rhs = ParseModifierPart(&st->next, delim, st->eflags, st->ctxt,
 				  NULL, NULL, NULL);
     if (rhs == NULL) {
 	st->missing_delim = delim;
@@ -2982,7 +2982,7 @@
      * SYSV modifications happen through the whole
      * string. Note the pattern is anchored at the end.
      */
-    st->termc = *--st->cp;
+    st->termc = *--st->next;
     if (lhs[0] == '\0' && *st->nstr == '\0') {
 	st->newStr = st->nstr;	/* special case */
     } else {
@@ -3164,8 +3164,8 @@
 		if (st.v->flags & VAR_JUNK)
 		    st.v->flags |= VAR_KEEP;
 		st.newStr = bmake_strdup(st.v->name);
-		st.cp = p + 1;
-		st.termc = *st.cp;
+		st.next = p + 1;
+		st.termc = *st.next;
 		break;
 	    }
 	case 'P':
@@ -3222,8 +3222,8 @@
 	case 'Q':
 	    if (p[1] == st.endc || p[1] == ':') {
 		st.newStr = VarQuote(st.nstr, modifier == 'q');
-		st.cp = p + 1;
-		st.termc = *st.cp;
+		st.next = p + 1;
+		st.termc = *st.next;
 		break;
 	    }
 	    goto default_case;
@@ -3231,8 +3231,8 @@
 	    if (p[1] == st.endc || p[1] == ':') {
 		st.newStr = ModifyWords(st.ctxt, st.sep, st.oneBigWord,
 					st.nstr, ModifyWord_Tail, NULL);
-		st.cp = p + 1;
-		st.termc = *st.cp;
+		st.next = p + 1;
+		st.termc = *st.next;
 		break;
 	    }
 	    goto default_case;
@@ -3240,8 +3240,8 @@
 	    if (p[1] == st.endc || p[1] == ':') {
 		st.newStr = ModifyWords(st.ctxt, st.sep, st.oneBigWord,
 					st.nstr, ModifyWord_Head, NULL);
-		st.cp = p + 1;
-		st.termc = *st.cp;
+		st.next = p + 1;
+		st.termc = *st.next;
 		break;
 	    }
 	    goto default_case;
@@ -3249,8 +3249,8 @@
 	    if (p[1] == st.endc || p[1] == ':') {
 		st.newStr = ModifyWords(st.ctxt, st.sep, st.oneBigWord,
 					st.nstr, ModifyWord_Suffix, NULL);
-		st.cp = p + 1;
-		st.termc = *st.cp;
+		st.next = p + 1;
+		st.termc = *st.next;
 		break;
 	    }
 	    goto default_case;
@@ -3258,8 +3258,8 @@
 	    if (p[1] == st.endc || p[1] == ':') {
 		st.newStr = ModifyWords(st.ctxt, st.sep, st.oneBigWord,
 					st.nstr, ModifyWord_Root, NULL);
-		st.cp = p + 1;
-		st.termc = *st.cp;
+		st.next = p + 1;
+		st.termc = *st.next;
 		break;
 	    }
 	    goto default_case;
@@ -3274,8 +3274,8 @@
 	case 'u':
 	    if (p[1] == st.endc || p[1] == ':') {
 		st.newStr = VarUniq(st.nstr);
-		st.cp = p + 1;
-		st.termc = *st.cp;
+		st.next = p + 1;
+		st.termc = *st.next;
 		break;
 	    }
 	    goto default_case;
@@ -3289,8 +3289,8 @@
 			Error(emsg, st.nstr);
 		} else
 		    st.newStr = varNoError;
-		st.cp = p + 2;
-		st.termc = *st.cp;
+		st.next = p + 2;
+		st.termc = *st.next;
 		break;
 	    }
 	    goto default_case;
@@ -3306,11 +3306,12 @@
 #endif
 		{
 		    Error("Unknown modifier '%c'", *p);
-		    for (st.cp = p + 1;
-			 *st.cp != ':' && *st.cp != st.endc && *st.cp != '\0';
-			 st.cp++)
+		    for (st.next = p + 1;
+			 *st.next != ':' && *st.next != st.endc &&
+			 *st.next != '\0';
+			 st.next++)
 			continue;
-		    st.termc = *st.cp;
+		    st.termc = *st.next;
 		    st.newStr = var_Error;
 		}
 	    }
@@ -3335,9 +3336,9 @@
 		"for \"%s\" (value \"%s\") modifier %c",
 		st.endc, st.v->name, st.nstr, modifier);
 	} else if (st.termc == ':') {
-	    st.cp++;
+	    st.next++;
 	}
-	p = st.cp;
+	p = st.next;
     }
 out:
     *lengthPtr = p - tstr;
@@ -3348,7 +3349,7 @@
 	  (int)strcspn(p, ":)}"), p, st.v->name);
 
 cleanup:
-    *lengthPtr = st.cp - tstr;
+    *lengthPtr = st.next - tstr;
     if (st.missing_delim != '\0')
 	Error("Unclosed substitution for %s (%c missing)",
 	      st.v->name, st.missing_delim);