ref: dd09d9a127fc0f19b01dcc2a541ad1cbcda855ba
parent: 1b9d49e2e7e79870dde670bd4f3d9d14bec5a9d6
author: Jacob Moody <moody@posixcafe.org>
date: Wed Apr 5 22:50:09 EDT 2023
awk: dont leak memory on extra format arguments awk 'BEGIN { while(++i <= 100000) { mem = "ps | grep awk"; printf("%d", 1+2, 3+4, 5+6, 7+8, 9+0) > "/dev/null"; if(i % 10000 == 0) system(mem) }}' https://github.com/onetrueawk/awk/commit/821c502359855d0c43be8e9b08f037ecb543d310
--- a/sys/src/cmd/awk/run.c
+++ b/sys/src/cmd/awk/run.c
@@ -973,8 +973,11 @@
}
*p = '\0';
free(fmt);
- for ( ; a; a = a->nnext) /* evaluate any remaining args */
- execute(a);
+ for ( ; a; a = a->nnext) { /* evaluate any remaining args */
+ x = execute(a);
+ if (istemp(x))
+ tfree(x);
+ }
*pbuf = buf;
*pbufsize = bufsize;
return p - buf;
--
⑨