events buffer need not end in NUL
This commit is contained in:
parent
c42a1d3d61
commit
95409400f7
3 changed files with 9 additions and 6 deletions
|
|
@ -346,7 +346,7 @@ readfile(char *dir, char *name, int *np)
|
||||||
len = d->length;
|
len = d->length;
|
||||||
free(d);
|
free(d);
|
||||||
data = emalloc(len+1);
|
data = emalloc(len+1);
|
||||||
fsread(fid, data, len);
|
len = fsreadn(fid, data, len);
|
||||||
fsclose(fid);
|
fsclose(fid);
|
||||||
if(np != nil)
|
if(np != nil)
|
||||||
*np = len;
|
*np = len;
|
||||||
|
|
|
||||||
|
|
@ -679,7 +679,7 @@ winevent(Window *w, char *fmt, ...)
|
||||||
if(b == nil)
|
if(b == nil)
|
||||||
error("vsmprint failed");
|
error("vsmprint failed");
|
||||||
n = strlen(b);
|
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;
|
w->events[w->nevents++] = w->owner;
|
||||||
memmove(w->events+w->nevents, b, n);
|
memmove(w->events+w->nevents, b, n);
|
||||||
free(b);
|
free(b);
|
||||||
|
|
|
||||||
|
|
@ -976,7 +976,6 @@ void
|
||||||
xfideventread(Xfid *x, Window *w)
|
xfideventread(Xfid *x, Window *w)
|
||||||
{
|
{
|
||||||
Fcall fc;
|
Fcall fc;
|
||||||
char *b;
|
|
||||||
int i, n;
|
int i, n;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
@ -1000,10 +999,14 @@ xfideventread(Xfid *x, Window *w)
|
||||||
fc.count = n;
|
fc.count = n;
|
||||||
fc.data = w->events;
|
fc.data = w->events;
|
||||||
respond(x, &fc, nil);
|
respond(x, &fc, nil);
|
||||||
b = w->events;
|
|
||||||
w->events = estrdup(w->events+n);
|
|
||||||
free(b);
|
|
||||||
w->nevents -= n;
|
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
|
void
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue