aboutsummaryrefslogtreecommitdiffstats
path: root/src/writer.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2021-01-13 14:31:00 +0100
committerDavid Robillard <d@drobilla.net>2022-01-13 15:33:54 -0500
commitf078026b3c5d63c494381d3573a8107ddd7d78f7 (patch)
tree1aec4cd71120f9c3ab92542780c9d9d10d210965 /src/writer.c
parent1644a72d32fec7833c9f487e9ed9b99e303fc015 (diff)
downloadserd-f078026b3c5d63c494381d3573a8107ddd7d78f7.tar.gz
serd-f078026b3c5d63c494381d3573a8107ddd7d78f7.tar.bz2
serd-f078026b3c5d63c494381d3573a8107ddd7d78f7.zip
Add SerdBuffer type for mutable buffers
This avoids const violations from abusing SerdChunk as a mutable buffer for string sinks.
Diffstat (limited to 'src/writer.c')
-rw-r--r--src/writer.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/writer.c b/src/writer.c
index d208a1cf..4b4d480b 100644
--- a/src/writer.c
+++ b/src/writer.c
@@ -1085,18 +1085,19 @@ serd_file_sink(const void* buf, size_t len, void* stream)
}
size_t
-serd_chunk_sink(const void* buf, size_t len, void* stream)
+serd_buffer_sink(const void* const buf, const size_t len, void* const stream)
{
- SerdChunk* chunk = (SerdChunk*)stream;
- chunk->buf = (uint8_t*)realloc((uint8_t*)chunk->buf, chunk->len + len);
- memcpy((uint8_t*)chunk->buf + chunk->len, buf, len);
- chunk->len += len;
+ SerdBuffer* buffer = (SerdBuffer*)stream;
+
+ buffer->buf = (char*)realloc(buffer->buf, buffer->len + len);
+ memcpy((uint8_t*)buffer->buf + buffer->len, buf, len);
+ buffer->len += len;
return len;
}
uint8_t*
-serd_chunk_sink_finish(SerdChunk* stream)
+serd_buffer_sink_finish(SerdBuffer* const stream)
{
- serd_chunk_sink("", 1, stream);
+ serd_buffer_sink("", 1, stream);
return (uint8_t*)stream->buf;
}