[Mesa-stable] [PATCH] glx: Properly handle cases where screen creation fails

Chuck Atkins chuck.atkins at kitware.com
Wed Feb 21 14:26:34 UTC 2018


This fixes a segfault exposed by a29d63ecf7 which occurs when swr is
used on an unsupported architecture.

Signed-off-by: Chuck Atkins <chuck.atkins at kitware.com>
Cc: mesa-stable at lists.freedesktop.org
Cc: George Kyriazis <george.kyriazis at intel.com>
Cc: Bruce Cherniak <bruce.cherniak at intel.com>
---
 src/gallium/state_trackers/glx/xlib/xm_api.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.c b/src/gallium/state_trackers/glx/xlib/xm_api.c
index 934c0aba11..3aec57e85d 100644
--- a/src/gallium/state_trackers/glx/xlib/xm_api.c
+++ b/src/gallium/state_trackers/glx/xlib/xm_api.c
@@ -182,9 +182,12 @@ xmesa_close_display(Display *display)
     * }
     */
 
-   if (xmdpy->smapi->destroy)
-      xmdpy->smapi->destroy(xmdpy->smapi);
-   free(xmdpy->smapi);
+   if (xmdpy->smapi)
+   {
+      if (xmdpy->smapi->destroy)
+         xmdpy->smapi->destroy(xmdpy->smapi);
+      free(xmdpy->smapi);
+   }
 
    XFree((char *) info);
 }
@@ -767,7 +770,7 @@ XMesaVisual XMesaCreateVisual( Display *display,
    XMesaVisual v;
    GLint red_bits, green_bits, blue_bits, alpha_bits;
 
-   if (!xmdpy)
+   if (!xmdpy || !xmdpy->screen)
       return NULL;
 
    /* For debugging only */
-- 
2.14.3



More information about the mesa-stable mailing list