diff options
| -rw-r--r-- | sys/src/cmd/acme/acme.c | 7 | ||||
| -rw-r--r-- | sys/src/cmd/acme/exec.c | 1 |
2 files changed, 6 insertions, 2 deletions
diff --git a/sys/src/cmd/acme/acme.c b/sys/src/cmd/acme/acme.c index 69ea715ce..d5addedbd 100644 --- a/sys/src/cmd/acme/acme.c +++ b/sys/src/cmd/acme/acme.c @@ -307,15 +307,18 @@ static int errorfd; void acmeerrorproc(void *) { - char *buf; + char *buf, *s; int n; threadsetname("acmeerrorproc"); buf = emalloc(8192+1); while((n=read(errorfd, buf, 8192)) >= 0){ buf[n] = '\0'; - sendp(cerr, estrdup(buf)); + s = estrdup(buf); + sendp(cerr, s); + free(s); } + free(buf); } void diff --git a/sys/src/cmd/acme/exec.c b/sys/src/cmd/acme/exec.c index f504275a5..3dbd001c5 100644 --- a/sys/src/cmd/acme/exec.c +++ b/sys/src/cmd/acme/exec.c @@ -159,6 +159,7 @@ execute(Text *t, uint aq0, uint aq1, int external, Text *argt) aa = getbytearg(argt, TRUE, TRUE, &a); if(a){ if(strlen(a) > EVENTSIZE){ /* too big; too bad */ + free(r); free(aa); free(a); warning(nil, "`argument string too long\n"); |
