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);
 	}