diff -r 921f83a8943f -r d218607f5a7e src/ucx/buffer.c --- a/src/ucx/buffer.c Sat Mar 25 17:18:51 2023 +0100 +++ b/src/ucx/buffer.c Fri May 05 18:02:11 2023 +0200 @@ -29,10 +29,8 @@ #include "cx/buffer.h" #include "cx/utils.h" -#include #include #include -#include int cxBufferInit( CxBuffer *buffer, @@ -41,6 +39,7 @@ CxAllocator const *allocator, int flags ) { + if (allocator == NULL) allocator = cxDefaultAllocator; buffer->allocator = allocator; buffer->flags = flags; if (!space) { @@ -71,6 +70,29 @@ } } +CxBuffer *cxBufferCreate( + void *space, + size_t capacity, + CxAllocator const *allocator, + int flags +) { + CxBuffer *buf = cxMalloc(allocator, sizeof(CxBuffer)); + if (buf == NULL) return NULL; + if (0 == cxBufferInit(buf, space, capacity, allocator, flags)) { + return buf; + } else { + cxFree(allocator, buf); + return NULL; + } +} + +void cxBufferFree(CxBuffer *buffer) { + if ((buffer->flags & CX_BUFFER_FREE_CONTENTS) == CX_BUFFER_FREE_CONTENTS) { + cxFree(buffer->allocator, buffer->bytes); + } + cxFree(buffer->allocator, buffer); +} + int cxBufferSeek( CxBuffer *buffer, off_t offset,