intel: Fix migration from sys_buffer in intel_bufferobj_buffer.
authorChia-I Wu <olvaffe@gmail.com>
Thu, 18 Jun 2009 05:42:22 +0000 (13:42 +0800)
committerEric Anholt <eric@anholt.net>
Fri, 19 Jun 2009 23:43:45 +0000 (16:43 -0700)
intel_bufferobj_subdata is called to migrate data from sys_buffer, and
it expects only one of buffer or sys_buffer is non-NULL.

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/intel/intel_buffer_objects.c

index 1f10dec..0100003 100644 (file)
@@ -300,15 +300,19 @@ intel_bufferobj_buffer(struct intel_context *intel,
    }
 
    if (intel_obj->buffer == NULL) {
+      void *sys_buffer = intel_obj->sys_buffer;
+
+      /* only one of buffer and sys_buffer could be non-NULL */
       intel_bufferobj_alloc_buffer(intel, intel_obj);
+      intel_obj->sys_buffer = NULL;
+
       intel_bufferobj_subdata(&intel->ctx,
                              GL_ARRAY_BUFFER_ARB,
                              0,
                              intel_obj->Base.Size,
-                             intel_obj->sys_buffer,
+                             sys_buffer,
                              &intel_obj->Base);
-      _mesa_free(intel_obj->sys_buffer);
-      intel_obj->sys_buffer = NULL;
+      _mesa_free(sys_buffer);
    }
 
    return intel_obj->buffer;