Handle XC-MISC request failure when allocating new XIDs. (fixes #7001)
This commit is contained in:
parent
f6d4fc007f
commit
81d6fd64c0
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue