From: Jamey Sharp Date: Sat, 9 Sep 2006 22:52:37 +0000 (-0700) Subject: Handle XC-MISC request failure when allocating new XIDs. (fixes #7001) X-Git-Url: http://git.demorecorder.com/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=81d6fd64c09255e90104b3c6e37c9023bd0aa6ec;p=free-sw%2Fxcb%2Flibxcb Handle XC-MISC request failure when allocating new XIDs. (fixes #7001) --- diff --git a/src/xcb_xid.c b/src/xcb_xid.c index 7d7f784..1c53b53 100644 --- a/src/xcb_xid.c +++ b/src/xcb_xid.c @@ -39,11 +39,16 @@ CARD32 XCBGenerateID(XCBConnection *c) pthread_mutex_lock(&c->xid.lock); if(c->xid.last == c->xid.max) { - XCBXCMiscGetXIDRangeRep *range; - range = XCBXCMiscGetXIDRangeReply(c, XCBXCMiscGetXIDRange(c), 0); - c->xid.last = range->start_id; - c->xid.max = range->start_id + (range->count - 1) * c->xid.inc; - free(range); + XCBXCMiscGetXIDRangeRep *range; + range = XCBXCMiscGetXIDRangeReply(c, XCBXCMiscGetXIDRange(c), 0); + if(!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; c->xid.last += c->xid.inc;