glx: Avoid atof() when computing the server's GLX version
authorAdam Jackson <ajax@redhat.com>
Thu, 19 Sep 2019 17:50:12 +0000 (13:50 -0400)
committerAdam Jackson <ajax@redhat.com>
Fri, 20 Sep 2019 00:50:01 +0000 (20:50 -0400)
atof() is locale-dependent (sigh), which means 1.3 becomes 1.0 if the
locale's decimal separator isn't a full-stop. Just use the protocol
major/minor instead. This would be slightly broken if the server
generically implements 1.3+ but a particular screen is only capable of
less, but in practice no such servers exist.

Gitlab: https://gitlab.freedesktop.org/mesa/mesa/issues/74
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
src/glx/glxext.c

index 6e6525aeeae2e032b0808e701589bcffe879a6d8..5943443100693224a05824ecf11147fad082d37f 100644 (file)
@@ -714,7 +714,8 @@ static GLboolean
    LockDisplay(dpy);
 
    psc->configs = NULL;
-   if (atof(priv->serverGLXversion) >= 1.3) {
+   if (priv->majorVersion > 1 ||
+       (priv->majorVersion == 1 && priv->minorVersion >= 3)) {
       GetReq(GLXGetFBConfigs, fb_req);
       fb_req->reqType = priv->majorOpcode;
       fb_req->glxCode = X_GLXGetFBConfigs;