st/dri: Fix surfaceless gl using contexts with previous bound surfaces

ctx->dPriv might be != NULL then draw which is NULL is accessed:

struct dri_drawable *draw = dri_drawable(driDrawPriv);
[..]
if (ctx->dPriv != driDrawPriv) {
      ctx->dPriv = driDrawPriv;
      draw->texture_stamp = driDrawPriv->lastStamp - 1;
}
This commit is contained in:
Benjamin Franzke 2011-02-09 20:42:50 +01:00 committed by Kristian Høgsberg
parent c79a5a7067
commit 0acb31be17
1 changed files with 6 additions and 2 deletions

View File

@ -169,6 +169,11 @@ dri_make_current(__DRIcontext * cPriv,
++ctx->bind_count;
if (!driDrawPriv && !driReadPriv)
return ctx->stapi->make_current(ctx->stapi, ctx->st, NULL, NULL);
else if (!driDrawPriv || !driReadPriv)
return GL_FALSE;
if (ctx->dPriv != driDrawPriv) {
ctx->dPriv = driDrawPriv;
draw->texture_stamp = driDrawPriv->lastStamp - 1;
@ -178,8 +183,7 @@ dri_make_current(__DRIcontext * cPriv,
read->texture_stamp = driReadPriv->lastStamp - 1;
}
ctx->stapi->make_current(ctx->stapi, ctx->st,
(draw) ? &draw->base : NULL, (read) ? &read->base : NULL);
ctx->stapi->make_current(ctx->stapi, ctx->st, &draw->base, &read->base);
return GL_TRUE;
}