Blame SOURCES/libepoxy-handle-lack-of-GLX.patch

e3f9e7
From 31a1fd9d6dcf298b7ed61ac06d54e6f9cd2dee03 Mon Sep 17 00:00:00 2001
e3f9e7
From: Yaron Cohen-Tal <yaronct@gmail.com>
e3f9e7
Date: Fri, 29 Jul 2016 17:55:49 +0300
e3f9e7
Subject: [PATCH 1/3] Check for NULL extensions string
e3f9e7
e3f9e7
Some X server not supporting any OpenGL feature, glXQueryExtensionsString
e3f9e7
will return NULL and causes the function to fail.
e3f9e7
e3f9e7
Thanks to Emmanuel Stapf (manus@eiffel.com) for the original patch.
e3f9e7
e3f9e7
This was verified running an application on macOS while the X server was
e3f9e7
running on Windows Xming 7.5.0.10
e3f9e7
e3f9e7
Signed-off-by: Emmanuele Bassi <ebassi@gnome.org>
e3f9e7
---
e3f9e7
 src/dispatch_common.c | 2 ++
e3f9e7
 1 file changed, 2 insertions(+)
e3f9e7
e3f9e7
diff --git a/src/dispatch_common.c b/src/dispatch_common.c
e3f9e7
index 013027f85bd5..ba6fca373d76 100644
e3f9e7
--- a/src/dispatch_common.c
e3f9e7
+++ b/src/dispatch_common.c
e3f9e7
@@ -347,6 +347,8 @@ epoxy_conservative_gl_version(void)
e3f9e7
 bool
e3f9e7
 epoxy_extension_in_string(const char *extension_list, const char *ext)
e3f9e7
 {
e3f9e7
+    if (!extension_list)
e3f9e7
+        return false;
e3f9e7
     const char *ptr = extension_list;
e3f9e7
     int len = strlen(ext);
e3f9e7
 
e3f9e7
-- 
e3f9e7
2.14.3
e3f9e7
e3f9e7
e3f9e7
From 7a1a79ec3b68857f8a0b1d26811fec2d00ea4fb2 Mon Sep 17 00:00:00 2001
e3f9e7
From: Emmanuele Bassi <ebassi@gnome.org>
e3f9e7
Date: Wed, 7 Dec 2016 15:12:15 +0000
e3f9e7
Subject: [PATCH 2/3] Avoid C99 declaration after statement
e3f9e7
e3f9e7
The rest of the library is C89-only, so we should keep it that way.
e3f9e7
---
e3f9e7
 src/dispatch_common.c | 5 +++--
e3f9e7
 1 file changed, 3 insertions(+), 2 deletions(-)
e3f9e7
e3f9e7
diff --git a/src/dispatch_common.c b/src/dispatch_common.c
e3f9e7
index ba6fca373d76..4f58be2caed2 100644
e3f9e7
--- a/src/dispatch_common.c
e3f9e7
+++ b/src/dispatch_common.c
e3f9e7
@@ -347,11 +347,12 @@ epoxy_conservative_gl_version(void)
e3f9e7
 bool
e3f9e7
 epoxy_extension_in_string(const char *extension_list, const char *ext)
e3f9e7
 {
e3f9e7
-    if (!extension_list)
e3f9e7
-        return false;
e3f9e7
     const char *ptr = extension_list;
e3f9e7
     int len = strlen(ext);
e3f9e7
 
e3f9e7
+    if (extension_list == NULL || *extension_list == '\0')
e3f9e7
+        return false;
e3f9e7
+
e3f9e7
     /* Make sure that don't just find an extension with our name as a prefix. */
e3f9e7
     while (true) {
e3f9e7
         ptr = strstr(ptr, ext);
e3f9e7
-- 
e3f9e7
2.14.3
e3f9e7
e3f9e7
e3f9e7
From 40d724e11ea37a4177bbb04fbe954c840c8e102d Mon Sep 17 00:00:00 2001
e3f9e7
From: Emmanuele Bassi <ebassi@gnome.org>
e3f9e7
Date: Mon, 12 Dec 2016 14:18:15 +0000
e3f9e7
Subject: [PATCH 3/3] Ensure we don't assert if GLX is not available
e3f9e7
e3f9e7
Certain X server do not have GLX enabled or supported, such as x2go. We
e3f9e7
can handle this case gracefully inside libepoxy.
e3f9e7
e3f9e7
Signed-off-by: Emmanuele Bassi <ebassi@gnome.org>
e3f9e7
---
e3f9e7
 src/dispatch_glx.c | 6 ++++++
e3f9e7
 1 file changed, 6 insertions(+)
e3f9e7
e3f9e7
diff --git a/src/dispatch_glx.c b/src/dispatch_glx.c
e3f9e7
index 78e61c24a761..9e4cef62c86a 100644
e3f9e7
--- a/src/dispatch_glx.c
e3f9e7
+++ b/src/dispatch_glx.c
e3f9e7
@@ -57,11 +57,17 @@ epoxy_glx_version(Display *dpy, int screen)
e3f9e7
     int ret;
e3f9e7
 
e3f9e7
     version_string = glXQueryServerString(dpy, screen, GLX_VERSION);
e3f9e7
+    if (!version_string)
e3f9e7
+        return 0;
e3f9e7
+
e3f9e7
     ret = sscanf(version_string, "%d.%d", &server_major, &server_minor);
e3f9e7
     assert(ret == 2);
e3f9e7
     server = server_major * 10 + server_minor;
e3f9e7
 
e3f9e7
     version_string = glXGetClientString(dpy, GLX_VERSION);
e3f9e7
+    if (!version_string)
e3f9e7
+        return 0;
e3f9e7
+
e3f9e7
     ret = sscanf(version_string, "%d.%d", &client_major, &client_minor);
e3f9e7
     assert(ret == 2);
e3f9e7
     client = client_major * 10 + client_minor;
e3f9e7
-- 
e3f9e7
2.14.3
e3f9e7