diff options
author | David Robillard <d@drobilla.net> | 2019-04-13 18:47:36 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2020-06-21 18:12:04 +0200 |
commit | 5ab74d90a99cc72d9c0ffa3deae7779ff86c518b (patch) | |
tree | 6ddb4dbb2a4a800d9dbf14fa279fe1581a4925c4 | |
parent | c9c50ba84127d31e71d61c7ad92e2166e9079dff (diff) | |
download | serd-5ab74d90a99cc72d9c0ffa3deae7779ff86c518b.tar.gz serd-5ab74d90a99cc72d9c0ffa3deae7779ff86c518b.tar.bz2 serd-5ab74d90a99cc72d9c0ffa3deae7779ff86c518b.zip |
Fix node alignment on 32-bit ARM
-rw-r--r-- | src/node.c | 2 | ||||
-rw-r--r-- | src/reader.c | 1 | ||||
-rw-r--r-- | src/stack.h | 4 |
3 files changed, 5 insertions, 2 deletions
@@ -345,7 +345,7 @@ serd_node_copy(const SerdNode* node) const size_t size = serd_node_total_size(node); SerdNode* copy = (SerdNode*)serd_calloc_aligned(size + 3, serd_node_align); - assert((intptr_t)node % serd_node_align == 0); + assert((uintptr_t)copy % serd_node_align == 0); memcpy(copy, node, size); return copy; diff --git a/src/reader.c b/src/reader.c index 3ef474ef..1f8c2678 100644 --- a/src/reader.c +++ b/src/reader.c @@ -90,6 +90,7 @@ push_node_padded(SerdReader* reader, size_t maxlen, void* mem = serd_stack_push_aligned( &reader->stack, sizeof(SerdNode) + maxlen + 1, sizeof(SerdNode)); + assert((uintptr_t)mem % sizeof(SerdNode) == 0); if (!mem) { return NULL; } diff --git a/src/stack.h b/src/stack.h index 1460e0c2..1a5b7136 100644 --- a/src/stack.h +++ b/src/stack.h @@ -17,6 +17,8 @@ #ifndef SERD_STACK_H #define SERD_STACK_H +#include "system.h" + #include <assert.h> #include <stdbool.h> #include <stddef.h> @@ -38,7 +40,7 @@ static inline SerdStack serd_stack_new(size_t size) { SerdStack stack; - stack.buf = (char*)calloc(size, 1); + stack.buf = (char*)serd_calloc_aligned(size, sizeof(SerdNode)); stack.buf_size = size; stack.size = SERD_STACK_BOTTOM; return stack; |