diff options
author | Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com> | 2014-04-25 11:16:50 +0300 |
---|---|---|
committer | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2014-06-26 15:37:14 +0300 |
commit | 2670d0f91d631c72d83e97d1ecc512a4a624f669 (patch) | |
tree | 76e626ec85a79017e48eaabcd8e76b483018c20f /src/glx/glx_pbuffer.c | |
parent | 0f7958aac29ce976d6fba7d87ae40c1b8d448bbc (diff) | |
download | external_mesa3d-2670d0f91d631c72d83e97d1ecc512a4a624f669.zip external_mesa3d-2670d0f91d631c72d83e97d1ecc512a4a624f669.tar.gz external_mesa3d-2670d0f91d631c72d83e97d1ecc512a4a624f669.tar.bz2 |
glx: Added missing null check in GetDrawableAttribute()
For GLX_BACK_BUFFER_AGE_EXT query added extra null check.
Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Diffstat (limited to 'src/glx/glx_pbuffer.c')
-rw-r--r-- | src/glx/glx_pbuffer.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/glx/glx_pbuffer.c b/src/glx/glx_pbuffer.c index 8f48093..231ab20 100644 --- a/src/glx/glx_pbuffer.c +++ b/src/glx/glx_pbuffer.c @@ -319,8 +319,8 @@ GetDrawableAttribute(Display * dpy, GLXDrawable drawable, pdraw = GetGLXDRIDrawable(dpy, drawable); if (attribute == GLX_BACK_BUFFER_AGE_EXT) { - struct glx_screen *psc = pdraw->psc; struct glx_context *gc = __glXGetCurrentContext(); + struct glx_screen *psc; /* The GLX_EXT_buffer_age spec says: * @@ -328,12 +328,16 @@ GetDrawableAttribute(Display * dpy, GLXDrawable drawable, * the calling thread's current context a GLXBadDrawable error is * generated." */ - if (gc == NULL || gc->currentDpy != dpy || - (gc->currentDrawable != drawable && gc->currentReadable != drawable)) { - __glXSendError(dpy, GLXBadDrawable, drawable, X_GLXGetDrawableAttributes, false); + if (pdraw == NULL || gc == NULL || gc->currentDpy != dpy || + (gc->currentDrawable != drawable && + gc->currentReadable != drawable)) { + __glXSendError(dpy, GLXBadDrawable, drawable, + X_GLXGetDrawableAttributes, false); return 0; } + psc = pdraw->psc; + if (psc->driScreen->getBufferAge != NULL) *value = psc->driScreen->getBufferAge(pdraw); |