[Xcb] [PATCH libxcb 9/7] c_client.py: don't start xcb_parts at offset 2 for no reason

Josh Triplett josh at joshtriplett.org
Tue Feb 25 05:34:27 PST 2014


On Tue, Feb 25, 2014 at 02:11:36PM +0200, Ran Benita wrote:
> Currently the generated code looks like this:
> 
>     struct iovec xcb_parts[4];
>     xcb_big_requests_enable_cookie_t xcb_ret;
>     xcb_big_requests_enable_request_t xcb_out;
> 
>     xcb_parts[2].iov_base = (char *) &xcb_out;
>     xcb_parts[2].iov_len = sizeof(xcb_out);
>     xcb_parts[3].iov_base = 0;
>     xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
> 
>     xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
> 
> But there is no reason to allocate e.g. 4 parts and then skip the first
> 2. Start at 0 instead.

Take a look at the implementation of xcb_send_request: if it needs to
send extra data before the request, it will use the iovec entries before
the passed-in pointer.  Yes, that's part of the API.  It really ought to
be more clearly documented.

- Josh Triplett


More information about the Xcb mailing list