gallium: Use CALLOC for pb_buffer to ensure that all fields of pipe_buffer are initia...
authorJosé Fonseca <jrfonseca@tungstengraphics.com>
Tue, 29 Jan 2008 00:41:21 +0000 (09:41 +0900)
committerJosé Fonseca <jrfonseca@tungstengraphics.com>
Tue, 29 Jan 2008 00:41:21 +0000 (09:41 +0900)
src/mesa/pipe/pipebuffer/pb_buffer_malloc.c
src/mesa/pipe/pipebuffer/pb_bufmgr_mm.c
src/mesa/pipe/pipebuffer/pb_bufmgr_pool.c

index fc83a00f3673e4e527b2d49f85ec6ab9a3104f81..2151f1d691e3308c961ae80e419912bbb2253275 100644 (file)
@@ -107,10 +107,9 @@ pb_malloc_buffer_create(size_t size,
 {
    struct malloc_buffer *buf;
    
-   /* TODO: accept an alignment parameter */
    /* TODO: do a single allocation */
    
-   buf = (struct malloc_buffer *)MALLOC(sizeof(struct malloc_buffer));
+   buf = CALLOC_STRUCT(malloc_buffer);
    if(!buf)
       return NULL;
    
index 2694f57bca0e3430372d3348b56355479e0ecb81..a2657dac5926703445da3ae2e76a31ee9cfed6b4 100644 (file)
@@ -399,6 +399,8 @@ mm_buffer_destroy(struct pb_buffer *buf)
    struct mm_buffer *mm_buf = mm_buffer(buf);
    struct mm_pb_manager *mm = mm_buf->mgr;
    
+   assert(buf->base.refcount == 0);
+   
    _glthread_LOCK_MUTEX(mm->mutex);
    mmFreeMem(mm_buf->block);
    FREE(buf);
index 7c2995411227926be6ef9aa0bcbc2507e657f17a..f80c7e34c071ed2eae7e7e0c8e893162ac8c62ea 100644 (file)
@@ -258,7 +258,7 @@ pool_bufmgr_create(struct pb_manager *provider,
    if(!pool->map)
       goto failure;
 
-   pool->bufs = (struct pool_buffer *) MALLOC(numBufs * sizeof(*pool->bufs));
+   pool->bufs = (struct pool_buffer *)CALLOC(numBufs, sizeof(*pool->bufs));
    if (!pool->bufs)
       goto failure;