Mesa (gallium-mesa-7.4): softpipe: add null ptr check in softpipe_map_constant_buffers()

Alan Hourihane alanh at kemper.freedesktop.org
Tue Mar 24 16:33:47 UTC 2009


Module: Mesa
Branch: gallium-mesa-7.4
Commit: 92128b5d11df7b4c0f3e48ee57e23bd36c13df11
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=92128b5d11df7b4c0f3e48ee57e23bd36c13df11

Author: Brian Paul <brianp at vmware.com>
Date:   Mon Feb  9 10:12:11 2009 -0700

softpipe: add null ptr check in softpipe_map_constant_buffers()

Fixes segfault regression in progs/glsl/identity.c

---

 src/gallium/drivers/softpipe/sp_draw_arrays.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/softpipe/sp_draw_arrays.c b/src/gallium/drivers/softpipe/sp_draw_arrays.c
index ed3e8f9..77258d8 100644
--- a/src/gallium/drivers/softpipe/sp_draw_arrays.c
+++ b/src/gallium/drivers/softpipe/sp_draw_arrays.c
@@ -47,16 +47,22 @@ static void
 softpipe_map_constant_buffers(struct softpipe_context *sp)
 {
    struct pipe_winsys *ws = sp->pipe.winsys;
-   uint i;
+   uint i, size;
+
    for (i = 0; i < PIPE_SHADER_TYPES; i++) {
       if (sp->constants[i].buffer && sp->constants[i].buffer->size)
          sp->mapped_constants[i] = ws->buffer_map(ws, sp->constants[i].buffer,
                                                   PIPE_BUFFER_USAGE_CPU_READ);
    }
 
+   if (sp->constants[PIPE_SHADER_VERTEX].buffer)
+      size = sp->constants[PIPE_SHADER_VERTEX].buffer->size;
+   else
+      size = 0;
+
    draw_set_mapped_constant_buffer(sp->draw,
                                    sp->mapped_constants[PIPE_SHADER_VERTEX],
-                                   sp->constants[PIPE_SHADER_VERTEX].buffer->size);
+                                   size);
 }
 
 static void




More information about the mesa-commit mailing list