commit - 96dc2330918909c925a5c3a6407116dad7f93c3a
commit + 7ca1c90109e17dced4b38fbaadea9d2cf39871b7
blob - 10dcdcc85a291ebcaa9aeb5eee8590f18b46cbbf
blob + 742aabdf8bd3a43c3f8a2819cf77939aed50b45d
--- src/cmd/acme/acme.c
+++ src/cmd/acme/acme.c
void
acmeerrorproc(void *v)
{
- char *buf;
+ char *buf, *s;
int n;
USED(v);
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
blob - deaef0cb18584ac8aa158a6f5c43c11471f47e10
blob + 68c5d9769104ff055b0de019884778a8de944b40
--- src/cmd/acme/exec.c
+++ src/cmd/acme/exec.c
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");
blob - 2d6cbccaa6ba055265cea571f81620de9c5806a0
blob + 8cff0855e2140069a19a50a947753dd852de7f88
--- src/cmd/acme/rows.c
+++ src/cmd/acme/rows.c
}
textdelete(&row->col[i]->tag, 0, row->col[i]->tag.file->b.nc, TRUE);
textinsert(&row->col[i]->tag, 0, r+n+1, nr-(n+1), TRUE);
+ free(r);
break;
case 'w':
l[Blinelen(b)-1] = 0;
}
textdelete(&row->tag, 0, row->tag.file->b.nc, TRUE);
textinsert(&row->tag, 0, r, nr, TRUE);
+ free(r);
break;
default:
done = 1;