diff options
Diffstat (limited to 'src/xcb_in.c')
-rw-r--r-- | src/xcb_in.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/xcb_in.c b/src/xcb_in.c index cacb220..cf7dbe7 100644 --- a/src/xcb_in.c +++ b/src/xcb_in.c @@ -133,7 +133,7 @@ static int read_packet(XCBConnection *c) length += genrep.length * 4; } - buf = malloc(length); + buf = malloc(length + (genrep.response_type == 1 ? 0 : sizeof(CARD32))); if(!buf) return 0; if(_xcb_in_read_block(c, buf, length) <= 0) @@ -142,6 +142,9 @@ static int read_packet(XCBConnection *c) return 0; } + if(genrep.response_type != 1) + ((XCBGenericEvent *) buf)->full_sequence = c->in.request_read; + /* reply, or checked error */ if(genrep.response_type == 1 || (genrep.response_type == 0 && pend && (pend->flags & XCB_REQUEST_CHECKED))) { |