Handle XC-MISC request failure when allocating new XIDs. (fixes #7001)

This commit is contained in:
Jamey Sharp 2006-09-09 15:52:37 -07:00
parent f6d4fc007f
commit 81d6fd64c0

View File

@ -39,11 +39,16 @@ CARD32 XCBGenerateID(XCBConnection *c)
pthread_mutex_lock(&c->xid.lock); pthread_mutex_lock(&c->xid.lock);
if(c->xid.last == c->xid.max) if(c->xid.last == c->xid.max)
{ {
XCBXCMiscGetXIDRangeRep *range; XCBXCMiscGetXIDRangeRep *range;
range = XCBXCMiscGetXIDRangeReply(c, XCBXCMiscGetXIDRange(c), 0); range = XCBXCMiscGetXIDRangeReply(c, XCBXCMiscGetXIDRange(c), 0);
c->xid.last = range->start_id; if(!range)
c->xid.max = range->start_id + (range->count - 1) * c->xid.inc; {
free(range); pthread_mutex_unlock(&c->xid.lock);
return -1;
}
c->xid.last = range->start_id;
c->xid.max = range->start_id + (range->count - 1) * c->xid.inc;
free(range);
} }
ret = c->xid.last | c->xid.base; ret = c->xid.last | c->xid.base;
c->xid.last += c->xid.inc; c->xid.last += c->xid.inc;