ref: 3358f3f36b956bc8595e6e8ea0f6373e8f44f1f9
parent: 7db55ba13f856c868b23a83dc3e10fa9fbc5fa3b
author: Arnold D. Robbins <arnold@skeeve.com>
date: Wed Jan 1 17:42:20 EST 2020
Cleanups from valgrind.
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2020-01-01 Arnold D. Robbins <arnold@skeeve.com>
+
+ * tran.c (syminit, arginit, envinit): Free sval member before
+ setting it. Thanks to valgrind.
+
2019-12-27 Arnold D. Robbins <arnold@skeeve.com>
* b.c (replace_repeat): Fix a bug whereby a{0,3} could match--- a/tran.c
+++ b/tran.c
@@ -114,6 +114,7 @@
rlengthloc = setsymtab("RLENGTH", "", 0.0, NUM, symtab);RLENGTH = &rlengthloc->fval;
symtabloc = setsymtab("SYMTAB", "", 0.0, ARR, symtab);+ free(symtabloc->sval);
symtabloc->sval = (char *) symtab;
}
@@ -126,6 +127,7 @@
ARGC = &setsymtab("ARGC", "", (Awkfloat) ac, NUM, symtab)->fval; cp = setsymtab("ARGV", "", 0.0, ARR, symtab);ARGVtab = makesymtab(NSYMTAB); /* could be (int) ARGC as well */
+ free(cp->sval);
cp->sval = (char *) ARGVtab;
for (i = 0; i < ac; i++) {sprintf(temp, "%d", i);
@@ -144,6 +146,7 @@
cp = setsymtab("ENVIRON", "", 0.0, ARR, symtab);ENVtab = makesymtab(NSYMTAB);
+ free(cp->sval);
cp->sval = (char *) ENVtab;
for ( ; *envp; envp++) {if ((p = strchr(*envp, '=')) == NULL)
--
⑨