gallium: only create pipe buffer when size is nonzero
authorMaarten Maathuis <madman2003@gmail.com>
Sun, 20 Dec 2009 13:03:03 +0000 (05:03 -0800)
committerJosé Fonseca <jfonseca@vmware.com>
Wed, 23 Dec 2009 16:33:54 +0000 (16:33 +0000)
- This fixes a crash upon starting spring (a rts engine/game).

Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
src/mesa/state_tracker/st_cb_bufferobjects.c

index 63196afba9c9eecdd26a825e855f6a6b33eee83a..494a3a99c8756efb297d7412b48952a36233d113 100644 (file)
@@ -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;
 }