various memory errors in acme
diff --git a/src/cmd/acme/cols.c b/src/cmd/acme/cols.c
index 8a74e34..e2de4f4 100644
--- a/src/cmd/acme/cols.c
+++ b/src/cmd/acme/cols.c
@@ -151,7 +151,7 @@
windelete(w);
winclose(w);
}
- memmove(c->w+i, c->w+i+1, (c->nw-i)*sizeof(Window*));
+ memmove(c->w+i, c->w+i+1, (c->nw-i-1)*sizeof(Window*));
c->nw--;
c->w = realloc(c->w, c->nw*sizeof(Window*));
if(c->nw == 0){
diff --git a/src/cmd/acme/look.c b/src/cmd/acme/look.c
index e8f926f..db69927 100644
--- a/src/cmd/acme/look.c
+++ b/src/cmd/acme/look.c
@@ -832,15 +832,13 @@
f = runemalloc(nf);
runemove(f, arg, nf);
rs = dirname(et, f, nf);
- f = rs.r;
- nf = rs.nr;
memset(&e, 0, sizeof e);
- e.name = f;
- e.nname = nf;
- e.bname = runetobyte(f, nf);
+ e.name = rs.r;
+ e.nname = rs.nr;
+ e.bname = runetobyte(rs.r, rs.nr);
e.jump = TRUE;
openfile(et, &e, FALSE);
- free(f);
+ free(e.name);
free(e.bname);
arg = skipbl(a, na, &narg);
}