diff options
author | Brian Paul <[email protected]> | 2012-12-26 16:26:58 -0700 |
---|---|---|
committer | Brian Paul <[email protected]> | 2012-12-31 18:17:58 -0700 |
commit | 05cd6cfd5f5a128404f09c4de1a7cf12f3f6f08a (patch) | |
tree | d1ff8affa05fb5642e33f160116a8a5f6eab5349 /src/mesa/drivers/x11 | |
parent | 66ea6e8ec3f7ee44e0011b1dd563fef76ead8bc5 (diff) |
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.
Diffstat (limited to 'src/mesa/drivers/x11')
-rw-r--r-- | src/mesa/drivers/x11/xm_api.c | 21 |
1 files changed, 12 insertions, 9 deletions
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; |