commit 95409400f71c426d4ef5811f5dbdf1c0778464f5 from: rsc date: Tue Feb 21 20:46:49 2006 UTC events buffer need not end in NUL commit - c42a1d3d6168df56f966ea1f3ba3ef39ebbff4e4 commit + 95409400f71c426d4ef5811f5dbdf1c0778464f5 blob - 9406b7993d5a43f3ed09c6c7d07f6cba49bd6da6 blob + 2beedb0540bc2e6dae8c91199faef6af91b3ef02 --- src/cmd/acme/mail/mesg.c +++ src/cmd/acme/mail/mesg.c @@ -346,7 +346,7 @@ readfile(char *dir, char *name, int *np) len = d->length; free(d); data = emalloc(len+1); - fsread(fid, data, len); + len = fsreadn(fid, data, len); fsclose(fid); if(np != nil) *np = len; blob - a2106ed2c40906cc8feba6d26c88cdc015eb6079 blob + 2f0328c8a4635a8771039a7e0f9ca8364029beab --- src/cmd/acme/wind.c +++ src/cmd/acme/wind.c @@ -679,7 +679,7 @@ winevent(Window *w, char *fmt, ...) if(b == nil) error("vsmprint failed"); n = strlen(b); - w->events = realloc(w->events, w->nevents+1+n); + w->events = erealloc(w->events, w->nevents+1+n); w->events[w->nevents++] = w->owner; memmove(w->events+w->nevents, b, n); free(b); blob - 126a5fe9ef921ba34d6d651c19172861276dd5d8 blob + 15b411ce0422fb419daec4062f956afba32ffb0c --- src/cmd/acme/xfid.c +++ src/cmd/acme/xfid.c @@ -976,7 +976,6 @@ void xfideventread(Xfid *x, Window *w) { Fcall fc; - char *b; int i, n; i = 0; @@ -1000,10 +999,14 @@ xfideventread(Xfid *x, Window *w) fc.count = n; fc.data = w->events; respond(x, &fc, nil); - b = w->events; - w->events = estrdup(w->events+n); - free(b); w->nevents -= n; + if(w->nevents){ + memmove(w->events, w->events+n, w->nevents); + w->events = erealloc(w->events, w->nevents); + }else{ + free(w->events); + w->events = nil; + } } void