From: Brian Paul Date: Wed, 26 Dec 2012 23:26:58 +0000 (-0700) Subject: xlib: handle _mesa_initialize_visual()'s return value X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=05cd6cfd5f5a128404f09c4de1a7cf12f3f6f08a;p=mesa.git xlib: handle _mesa_initialize_visual()'s return value If the call fails, we should return NULL from XMesaCreateVisual(). This was found when Waffle tried to create a visual with depth/stencil bits = -1. That's an illegal value for glXChooseFBConfig() and we should return NULL in that situation. Note: This is a candidate for the stable branches. --- diff --git a/src/mesa/drivers/x11/xm_api.c b/src/mesa/drivers/x11/xm_api.c index 8105f4dbd52..2ba65ffd787 100644 --- a/src/mesa/drivers/x11/xm_api.c +++ b/src/mesa/drivers/x11/xm_api.c @@ -847,15 +847,18 @@ XMesaVisual XMesaCreateVisual( XMesaDisplay *display, alpha_bits = v->mesa_visual.alphaBits; } - _mesa_initialize_visual( &v->mesa_visual, - db_flag, stereo_flag, - red_bits, green_bits, - blue_bits, alpha_bits, - depth_size, - stencil_size, - accum_red_size, accum_green_size, - accum_blue_size, accum_alpha_size, - 0 ); + if (!_mesa_initialize_visual(&v->mesa_visual, + db_flag, stereo_flag, + red_bits, green_bits, + blue_bits, alpha_bits, + depth_size, + stencil_size, + accum_red_size, accum_green_size, + accum_blue_size, accum_alpha_size, + 0)) { + FREE(v); + return NULL; + } /* XXX minor hack */ v->mesa_visual.level = level;