aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/acme/ecmd.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-03-23 20:19:53 +0000
committerrsc <devnull@localhost>2005-03-23 20:19:53 +0000
commit5e77b8bb616bdc146b726f7d3301a271dd08f3c2 (patch)
treea93327077322f0c0c1fa17d81633ea0a1239693b /src/cmd/acme/ecmd.c
parent97f2be1c5fee53e32c79175ae05a0f1b1fffe331 (diff)
downloadplan9port-5e77b8bb616bdc146b726f7d3301a271dd08f3c2.tar.gz
plan9port-5e77b8bb616bdc146b726f7d3301a271dd08f3c2.tar.bz2
plan9port-5e77b8bb616bdc146b726f7d3301a271dd08f3c2.zip
Two bug fixes.
1. Make sure cmdname NUL-terminates its arguments. 2. Fix the elogapply warning, hopefully.
Diffstat (limited to 'src/cmd/acme/ecmd.c')
-rw-r--r--src/cmd/acme/ecmd.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/cmd/acme/ecmd.c b/src/cmd/acme/ecmd.c
index 7ccb9427..eed45503 100644
--- a/src/cmd/acme/ecmd.c
+++ b/src/cmd/acme/ecmd.c
@@ -137,7 +137,6 @@ edittext(Window *w, int q, Rune *r, int nr)
case Inactive:
return "permission denied";
case Inserting:
- w->neditwrsel += nr;
eloginsert(f, q, r, nr);
return nil;
case Collecting:
@@ -215,7 +214,7 @@ c_cmd(Text *t, Cmd *cp)
{
elogreplace(t->file, addr.r.q0, addr.r.q1, cp->u.text->r, cp->u.text->n);
t->q0 = addr.r.q0;
- t->q1 = addr.r.q0+cp->u.text->n;
+ t->q1 = addr.r.q1;
return TRUE;
}
@@ -520,7 +519,7 @@ s_cmd(Text *t, Cmd *cp)
if(!didsub && nest==0)
editerror("no substitution");
t->q0 = addr.r.q0;
- t->q1 = addr.r.q1+delta;
+ t->q1 = addr.r.q1;
return TRUE;
Err:
@@ -602,7 +601,6 @@ runpipe(Text *t, int cmd, Rune *cr, int ncr, int state)
w = t->w;
t->q0 = addr.r.q0;
t->q1 = addr.r.q1;
- w->neditwrsel = 0;
if(cmd == '<' || cmd=='|')
elogdelete(t->file, t->q0, t->q1);
}
@@ -632,10 +630,6 @@ runpipe(Text *t, int cmd, Rune *cr, int ncr, int state)
editing = Inactive;
if(t!=nil && t->w!=nil)
winlock(t->w, 'M');
- if(state == Inserting){
- t->q0 = addr.r.q0;
- t->q1 = addr.r.q0 + t->w->neditwrsel;
- }
}
int
@@ -746,7 +740,7 @@ append(File *f, Cmd *cp, long p)
if(cp->u.text->n > 0)
eloginsert(f, p, cp->u.text->r, cp->u.text->n);
f->curtext->q0 = p;
- f->curtext->q1 = p+cp->u.text->n;
+ f->curtext->q1 = p;
return TRUE;
}
@@ -1307,8 +1301,10 @@ cmdname(File *f, String *str, int set)
runemove(r, s, n);
}else{
newname = dirname(f->curtext, runestrdup(s), n);
- r = newname.r;
n = newname.nr;
+ r = runemalloc(n+1);
+ runemove(r, newname.r, n);
+ free(newname.r);
}
fc.f = f;
fc.r = r;