diff options
author | David Robillard <d@drobilla.net> | 2021-10-27 14:15:31 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2022-01-28 21:57:24 -0500 |
commit | 30487c277ac5d4be5786733ca7b98adb4c810ae9 (patch) | |
tree | f1b00a7725d74a594fcd91de2aea924485356528 /src/caret.c | |
parent | 56cceb103dc633d6af957472945e792187a5dd4e (diff) | |
download | serd-30487c277ac5d4be5786733ca7b98adb4c810ae9.tar.gz serd-30487c277ac5d4be5786733ca7b98adb4c810ae9.tar.bz2 serd-30487c277ac5d4be5786733ca7b98adb4c810ae9.zip |
Add custom allocator support
Diffstat (limited to 'src/caret.c')
-rw-r--r-- | src/caret.c | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/src/caret.c b/src/caret.c index b6911468..67abbadb 100644 --- a/src/caret.c +++ b/src/caret.c @@ -16,40 +16,54 @@ #include "caret.h" +#include "memory.h" + #include <assert.h> #include <stdbool.h> #include <stdlib.h> #include <string.h> SerdCaret* -serd_caret_new(const SerdNode* name, unsigned line, unsigned col) +serd_caret_new(SerdAllocator* const allocator, + const SerdNode* const name, + const unsigned line, + const unsigned col) { assert(name); - SerdCaret* caret = (SerdCaret*)malloc(sizeof(SerdCaret)); + SerdCaret* const caret = + (SerdCaret*)serd_amalloc(allocator, sizeof(SerdCaret)); + + if (caret) { + caret->file = name; + caret->line = line; + caret->col = col; + } - caret->file = name; - caret->line = line; - caret->col = col; return caret; } SerdCaret* -serd_caret_copy(const SerdCaret* caret) +serd_caret_copy(SerdAllocator* const allocator, const SerdCaret* caret) { if (!caret) { return NULL; } - SerdCaret* copy = (SerdCaret*)malloc(sizeof(SerdCaret)); - memcpy(copy, caret, sizeof(SerdCaret)); + SerdCaret* const copy = + (SerdCaret*)serd_amalloc(allocator, sizeof(SerdCaret)); + + if (copy) { + memcpy(copy, caret, sizeof(SerdCaret)); + } + return copy; } void -serd_caret_free(SerdCaret* caret) +serd_caret_free(SerdAllocator* const allocator, SerdCaret* caret) { - free(caret); + serd_afree(allocator, caret); } bool |