From c5a70cc23d7c4cda32875b46db0990609f229bdd Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sun, 3 Nov 2013 04:03:38 +0100 Subject: rio: do backspace \b processing inplace avoiding buffer allocation --- sys/src/cmd/rio/wind.c | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/sys/src/cmd/rio/wind.c b/sys/src/cmd/rio/wind.c index 4a15cc6e8..3497275d2 100644 --- a/sys/src/cmd/rio/wind.c +++ b/sys/src/cmd/rio/wind.c @@ -164,7 +164,7 @@ showcandidates(Window *, Completion *); void winctl(void *arg) { - Rune *rp, *bp, *tp, *up; + Rune *rp, *up; uint qh, q0; int nr, nb, c, wid, i, npart, initial, lastb; char *s, *t, part[3]; @@ -346,23 +346,18 @@ winctl(void *arg) recv(cwm.cw, &pair); rp = pair.s; nr = pair.ns; - bp = rp; for(i=0; i w->qh) @@ -371,10 +366,7 @@ winctl(void *arg) wdelete(w, qh, qh+initial); w->qh = qh; } - free(rp); - rp = tp; - nr = up-tp; - rp[nr] = 0; + nr = up - rp; break; } w->qh = winsert(w, rp, nr, w->qh)+nr; -- cgit v1.2.3