- static const char pad[3];
- int i;
- int len = 0;
-
- for(i = 0; i < count; ++i)
- len += XCB_CEIL(vector[i].iov_len);
-
- /* Is the queue about to overflow? */
- if(c->out.queue_len + len < sizeof(c->out.queue))
- {
- /* No, this will fit. */
- for(i = 0; i < count; ++i)
- {
- memcpy(c->out.queue + c->out.queue_len, vector[i].iov_base, vector[i].iov_len);
- if(vector[i].iov_len & 3)
- memset(c->out.queue + c->out.queue_len + vector[i].iov_len, 0, XCB_PAD(vector[i].iov_len));
- c->out.queue_len += XCB_CEIL(vector[i].iov_len);
- }
- return len;
- }
-
- assert(!c->out.vec_len);
- assert(!c->out.vec);
- c->out.vec = malloc(sizeof(struct iovec) * (1 + count * 2));
- if(!c->out.vec)
- return -1;