Mesa (master): gallium: only create pipe buffer when size is nonzero

Brian Paul brianp at kemper.freedesktop.org
Sun Dec 27 09:25:17 PST 2009


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

Author: Maarten Maathuis <madman2003 at gmail.com>
Date:   Sun Dec 20 05:03:03 2009 -0800

gallium: only create pipe buffer when size is nonzero

- This fixes a crash upon starting spring (a rts engine/game).

Signed-off-by: Maarten Maathuis <madman2003 at gmail.com>

---

 src/mesa/state_tracker/st_cb_bufferobjects.c |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/mesa/state_tracker/st_cb_bufferobjects.c b/src/mesa/state_tracker/st_cb_bufferobjects.c
index 63196af..494a3a9 100644
--- a/src/mesa/state_tracker/st_cb_bufferobjects.c
+++ b/src/mesa/state_tracker/st_cb_bufferobjects.c
@@ -170,15 +170,19 @@ st_bufferobj_data(GLcontext *ctx,
 
    pipe_buffer_reference( &st_obj->buffer, NULL );
 
-   st_obj->buffer = pipe_buffer_create( pipe->screen, 32, buffer_usage, size );
+   if (size != 0) {
+      st_obj->buffer = pipe_buffer_create(pipe->screen, 32, buffer_usage, size);
 
-   if (!st_obj->buffer) {
-      return GL_FALSE;
+      if (!st_obj->buffer) {
+         return GL_FALSE;
+      }
+
+      if (data)
+         st_no_flush_pipe_buffer_write(st_context(ctx), st_obj->buffer, 0,
+				       size, data);
+      return GL_TRUE;
    }
 
-   if (data)
-      st_no_flush_pipe_buffer_write(st_context(ctx), st_obj->buffer, 0,
-				    size, data);
    return GL_TRUE;
 }
 



More information about the mesa-commit mailing list