Mesa (master): st/mesa: fix crash when DrawBuffer->_ColorDrawBuffers[0] is NULL

Marek Olšák mareko at kemper.freedesktop.org
Tue Feb 22 13:11:29 UTC 2011


Module: Mesa
Branch: master
Commit: 7942e6a5ae0113f1cbdf62b772849cf6cdd4eca1
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7942e6a5ae0113f1cbdf62b772849cf6cdd4eca1

Author: Marek Olšák <maraeo at gmail.com>
Date:   Sun Feb 20 16:50:48 2011 +0100

st/mesa: fix crash when DrawBuffer->_ColorDrawBuffers[0] is NULL

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-commit mailing list