In the GLX workaround, use !strcmp to check for equality with "GLX", not strcmp.
[free-sw/xcb/libxcb] / src / xcb_out.c
index eb41e59..e371cd1 100644 (file)
@@ -144,7 +144,7 @@ unsigned int XCBSendRequest(XCBConnection *c, int flags, struct iovec *vector, c
     flags &= ~XCB_REQUEST_RAW;
 
     /* do we need to work around the X server bug described in glx.xml? */
-    if(req->ext && !req->isvoid && strcmp(req->ext->name, "GLX") &&
+    if(req->ext && !req->isvoid && !strcmp(req->ext->name, "GLX") &&
             ((req->opcode == 17 && ((CARD32 *) vector[0].iov_base)[0] == 0x10004) ||
              req->opcode == 21))
         workaround = WORKAROUND_GLX_GET_FB_CONFIGS_BUG;
@@ -165,7 +165,8 @@ unsigned int XCBSendRequest(XCBConnection *c, int flags, struct iovec *vector, c
 
     request = ++c->out.request;
     assert(request != 0);
-    _xcb_in_expect_reply(c, request, workaround, flags);
+    if(workaround != WORKAROUND_NONE || flags != 0)
+        _xcb_in_expect_reply(c, request, workaround, flags);
     if(!req->isvoid)
         c->in.request_expected = c->out.request;