{
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;
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);
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;