From 5ab74d90a99cc72d9c0ffa3deae7779ff86c518b Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 13 Apr 2019 18:47:36 +0100 Subject: Fix node alignment on 32-bit ARM --- src/node.c | 2 +- src/reader.c | 1 + src/stack.h | 4 +++- 3 files changed, 5 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/node.c b/src/node.c index 56c8d699..6d70feaf 100644 --- a/src/node.c +++ b/src/node.c @@ -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 #include #include @@ -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; -- cgit v1.2.1