awk: rename temp variables, no code changes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2021-07-01 16:02:16 +02:00
parent d7354df169
commit 1573487e21

View File

@ -1775,14 +1775,14 @@ static node *mk_splitter(const char *s, tsplitter *spl)
static regex_t *as_regex(node *op, regex_t *preg)
{
int cflags;
var *v;
var *tmpvar;
const char *s;
if ((op->info & OPCLSMASK) == OC_REGEXP) {
return icase ? op->r.ire : op->l.re;
}
v = nvalloc(1);
s = getvar_s(evaluate(op, v));
tmpvar = nvalloc(1);
s = getvar_s(evaluate(op, tmpvar));
cflags = icase ? REG_EXTENDED | REG_ICASE : REG_EXTENDED;
/* Testcase where REG_EXTENDED fails (unpaired '{'):
@ -1794,7 +1794,7 @@ static regex_t *as_regex(node *op, regex_t *preg)
cflags &= ~REG_EXTENDED;
xregcomp(preg, s, cflags);
}
nvfree(v, 1);
nvfree(tmpvar, 1);
return preg;
}
@ -2243,12 +2243,12 @@ static char *awk_printf(node *n, int *len)
const char *s1;
int i, j, incr, bsize;
char c, c1;
var *v, *arg;
var *tmpvar, *arg;
v = nvalloc(1);
tmpvar = nvalloc(1);
//TODO: above, to avoid allocating a single temporary var, take a pointer
//to a temporary that our caller (evaluate()) already has?
fmt = f = xstrdup(getvar_s(evaluate(nextarg(&n), v)));
fmt = f = xstrdup(getvar_s(evaluate(nextarg(&n), tmpvar)));
i = 0;
while (*f) {
@ -2268,7 +2268,7 @@ static char *awk_printf(node *n, int *len)
f++;
c1 = *f;
*f = '\0';
arg = evaluate(nextarg(&n), v);
arg = evaluate(nextarg(&n), tmpvar);
j = i;
if (c == 'c' || !c) {
@ -2289,7 +2289,7 @@ static char *awk_printf(node *n, int *len)
}
free(fmt);
nvfree(v, 1);
nvfree(tmpvar, 1);
b = xrealloc(b, i + 1);
b[i] = '\0';
#if ENABLE_FEATURE_AWK_GNU_EXTENSIONS
@ -2429,7 +2429,7 @@ static NOINLINE var *exec_builtin(node *op, var *res)
{
#define tspl (G.exec_builtin__tspl)
var *tv;
var *tmpvars;
node *an[4];
var *av[4];
const char *as[4];
@ -2441,7 +2441,12 @@ static NOINLINE var *exec_builtin(node *op, var *res)
time_t tt;
int i, l, ll, n;
tv = nvalloc(4);
tmpvars = nvalloc(4);
#define TMPVAR0 (tmpvars)
#define TMPVAR1 (tmpvars + 1)
#define TMPVAR2 (tmpvars + 2)
#define TMPVAR3 (tmpvars + 3)
#define TMPVAR(i) (tmpvars + (i))
isr = info = op->info;
op = op->l.n;
@ -2449,7 +2454,7 @@ static NOINLINE var *exec_builtin(node *op, var *res)
for (i = 0; i < 4 && op; i++) {
an[i] = nextarg(&op);
if (isr & 0x09000000)
av[i] = evaluate(an[i], &tv[i]);
av[i] = evaluate(an[i], TMPVAR(i));
if (isr & 0x08000000)
as[i] = getvar_s(av[i]);
isr >>= 1;
@ -2474,7 +2479,7 @@ static NOINLINE var *exec_builtin(node *op, var *res)
if (nargs > 2) {
spl = (an[2]->info & OPCLSMASK) == OC_REGEXP ?
an[2] : mk_splitter(getvar_s(evaluate(an[2], &tv[2])), &tspl);
an[2] : mk_splitter(getvar_s(evaluate(an[2], TMPVAR2)), &tspl);
} else {
spl = &fsplitter.n;
}
@ -2617,7 +2622,13 @@ static NOINLINE var *exec_builtin(node *op, var *res)
break;
}
nvfree(tv, 4);
nvfree(tmpvars, 4);
#undef TMPVAR0
#undef TMPVAR1
#undef TMPVAR2
#undef TMPVAR3
#undef TMPVAR
return res;
#undef tspl
}
@ -2636,14 +2647,16 @@ static var *evaluate(node *op, var *res)
#define seed (G.evaluate__seed)
#define sreg (G.evaluate__sreg)
var *v1;
var *tmpvars;
#define TMPVAR0 (tmpvars)
#define TMPVAR1 (tmpvars + 1)
if (!op)
return setvar_s(res, NULL);
debug_printf_eval("entered %s()\n", __func__);
v1 = nvalloc(2);
tmpvars = nvalloc(2);
while (op) {
struct {
@ -2683,7 +2696,7 @@ static var *evaluate(node *op, var *res)
}
if (op1->r.n) { /* array ref? */
const char *s;
s = getvar_s(evaluate(op1->r.n, v1));
s = getvar_s(evaluate(op1->r.n, TMPVAR0));
hash_remove(iamarray(v), s);
} else {
clear_array(iamarray(v));
@ -2693,7 +2706,7 @@ static var *evaluate(node *op, var *res)
/* execute inevitable things */
if (opinfo & OF_RES1)
L.v = evaluate(op1, v1);
L.v = evaluate(op1, TMPVAR0);
if (opinfo & OF_STR1) {
L.s = getvar_s(L.v);
debug_printf_eval("L.s:'%s'\n", L.s);
@ -2710,7 +2723,7 @@ static var *evaluate(node *op, var *res)
* (Seen trying to evaluate "$444 $44444")
*/
if (opinfo & OF_RES2) {
R.v = evaluate(op->r.n, v1+1);
R.v = evaluate(op->r.n, TMPVAR1);
//TODO: L.v may be invalid now, set L.v to NULL to catch bugs?
//L.v = NULL;
}
@ -2793,7 +2806,7 @@ static var *evaluate(node *op, var *res)
fputs(getvar_s(intvar[F0]), F);
} else {
for (;;) {
var *v = evaluate(nextarg(&op1), v1);
var *v = evaluate(nextarg(&op1), TMPVAR0);
if (v->type & VF_NUMBER) {
fmt_num(g_buf, MAXVARFMT, getvar_s(intvar[OFMT]),
getvar_i(v), TRUE);
@ -2892,7 +2905,7 @@ static var *evaluate(node *op, var *res)
/* if source is a temporary string, jusk relink it to dest */
//Disabled: if R.v is numeric but happens to have cached R.v->string,
//then L.v ends up being a string, which is wrong
// if (R.v == v1+1 && R.v->string) {
// if (R.v == TMPVAR1 && R.v->string) {
// res = setvar_p(L.v, R.v->string);
// R.v->string = NULL;
// } else {
@ -2908,7 +2921,7 @@ static var *evaluate(node *op, var *res)
break;
case XC( OC_FUNC ): {
var *tv, *sv_fnargs;
var *argvars, *sv_fnargs;
const char *sv_progname;
int nargs, i;
@ -2919,10 +2932,10 @@ static var *evaluate(node *op, var *res)
/* The body might be empty, still has to eval the args */
nargs = op->r.f->nargs;
tv = nvalloc(nargs);
argvars = nvalloc(nargs);
i = 0;
while (op1) {
var *arg = evaluate(nextarg(&op1), v1);
var *arg = evaluate(nextarg(&op1), TMPVAR0);
if (i == nargs) {
/* call with more arguments than function takes.
* (gawk warns: "warning: function 'f' called with more arguments than declared").
@ -2930,18 +2943,18 @@ static var *evaluate(node *op, var *res)
clrvar(arg);
continue;
}
copyvar(&tv[i], arg);
tv[i].type |= VF_CHILD;
tv[i].x.parent = arg;
copyvar(&argvars[i], arg);
argvars[i].type |= VF_CHILD;
argvars[i].x.parent = arg;
i++;
}
sv_fnargs = fnargs;
sv_progname = g_progname;
fnargs = tv;
fnargs = argvars;
res = evaluate(op->r.f->body.first, res);
nvfree(fnargs, nargs);
nvfree(argvars, nargs);
g_progname = sv_progname;
fnargs = sv_fnargs;
@ -3266,7 +3279,10 @@ static var *evaluate(node *op, var *res)
break;
} /* while (op) */
nvfree(v1, 2);
nvfree(tmpvars, 2);
#undef TMPVAR0
#undef TMPVAR1
debug_printf_eval("returning from %s(): %p\n", __func__, res);
return res;
#undef fnargs