summaryrefslogtreecommitdiffstats
path: root/src/glx/glx_pbuffer.c
diff options
context:
space:
mode:
authorJuha-Pekka Heikkila <juhapekka.heikkila@gmail.com>2014-04-25 11:16:50 +0300
committerVille Syrjälä <ville.syrjala@linux.intel.com>2014-06-26 15:37:14 +0300
commit2670d0f91d631c72d83e97d1ecc512a4a624f669 (patch)
tree76e626ec85a79017e48eaabcd8e76b483018c20f /src/glx/glx_pbuffer.c
parent0f7958aac29ce976d6fba7d87ae40c1b8d448bbc (diff)
downloadexternal_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.c12
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);