1.1 --- a/src/buffer.c Sun Jan 30 14:19:00 2022 +0100 1.2 +++ b/src/buffer.c Mon Jan 31 17:15:59 2022 +0100 1.3 @@ -32,39 +32,37 @@ 1.4 #include <stdlib.h> 1.5 #include <string.h> 1.6 1.7 -CxBuffer *cxBufferCreate( 1.8 +int cxBufferInit( 1.9 + CxBuffer *buffer, 1.10 void *space, 1.11 size_t capacity, 1.12 + CxAllocator *allocator, 1.13 int flags 1.14 ) { 1.15 - CxBuffer *buffer = (CxBuffer *) malloc(sizeof(cx_buffer_s)); 1.16 - if (buffer) { 1.17 - buffer->flags = flags; 1.18 - if (!space) { 1.19 - buffer->bytes = malloc(capacity); 1.20 - if (!buffer->bytes) { 1.21 - free(buffer); 1.22 - return NULL; 1.23 - } 1.24 - memset(buffer->bytes, 0, capacity); 1.25 - buffer->flags |= CX_BUFFER_FREE_CONTENTS; 1.26 - } else { 1.27 - buffer->bytes = space; 1.28 + buffer->allocator = allocator; 1.29 + buffer->flags = flags; 1.30 + if (!space) { 1.31 + buffer->bytes = cxMalloc(allocator, capacity); 1.32 + if (buffer->bytes == NULL) { 1.33 + return 1; 1.34 } 1.35 - buffer->capacity = capacity; 1.36 - buffer->size = 0; 1.37 + memset(buffer->bytes, 0, capacity); 1.38 + buffer->flags |= CX_BUFFER_FREE_CONTENTS; 1.39 + } else { 1.40 + buffer->bytes = space; 1.41 + } 1.42 + buffer->capacity = capacity; 1.43 + buffer->size = 0; 1.44 1.45 - buffer->pos = 0; 1.46 - } 1.47 + buffer->pos = 0; 1.48 1.49 - return buffer; 1.50 + return 0; 1.51 } 1.52 1.53 void cxBufferDestroy(CxBuffer *buffer) { 1.54 if ((buffer->flags & CX_BUFFER_FREE_CONTENTS) == CX_BUFFER_FREE_CONTENTS) { 1.55 - free(buffer->bytes); 1.56 + cxFree(buffer->allocator, buffer->bytes); 1.57 } 1.58 - free(buffer); 1.59 } 1.60 1.61 CxBuffer *cxBufferExtract(