[Mesa-dev] [PATCH] st/mesa: fix crash when DrawBuffer->_ColorDrawBuffers[0] is NULL
Keith Whitwell
keithw at vmware.com
Tue Feb 22 03:03:40 PST 2011
Looks good Marek.
Keith
On Sun, 2011-02-20 at 16:52 +0100, Marek Olšák wrote:
> This fixes the game Tiny and Big.
> ---
> src/mesa/state_tracker/st_cb_clear.c | 16 ++++++++++------
> 1 files changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_cb_clear.c b/src/mesa/state_tracker/st_cb_clear.c
> index d81e554..0e0c432 100644
> --- a/src/mesa/state_tracker/st_cb_clear.c
> +++ b/src/mesa/state_tracker/st_cb_clear.c
> @@ -300,9 +300,11 @@ clear_with_quad(struct gl_context *ctx,
> cso_set_fragment_shader_handle(st->cso_context, st->clear.fs);
> cso_set_vertex_shader_handle(st->cso_context, st->clear.vs);
>
> - st_translate_color(ctx->Color.ClearColor,
> - ctx->DrawBuffer->_ColorDrawBuffers[0]->_BaseFormat,
> - clearColor);
> + if (ctx->DrawBuffer->_ColorDrawBuffers[0]) {
> + st_translate_color(ctx->Color.ClearColor,
> + ctx->DrawBuffer->_ColorDrawBuffers[0]->_BaseFormat,
> + clearColor);
> + }
>
> /* draw quad matching scissor rect */
> draw_quad(st, x0, y0, x1, y1, (GLfloat) ctx->Depth.Clear, clearColor);
> @@ -555,9 +557,11 @@ st_Clear(struct gl_context *ctx, GLbitfield mask)
> ctx->DrawBuffer->Visual.stencilBits == 0))
> clear_buffers |= PIPE_CLEAR_DEPTHSTENCIL;
>
> - st_translate_color(ctx->Color.ClearColor,
> - ctx->DrawBuffer->_ColorDrawBuffers[0]->_BaseFormat,
> - clearColor);
> + if (ctx->DrawBuffer->_ColorDrawBuffers[0]) {
> + st_translate_color(ctx->Color.ClearColor,
> + ctx->DrawBuffer->_ColorDrawBuffers[0]->_BaseFormat,
> + clearColor);
> + }
>
> st->pipe->clear(st->pipe, clear_buffers, ctx->Color.ClearColor,
> ctx->Depth.Clear, ctx->Stencil.Clear);
More information about the mesa-dev
mailing list