aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2019-04-13 18:47:36 +0100
committerDavid Robillard <d@drobilla.net>2020-06-21 18:12:04 +0200
commit5ab74d90a99cc72d9c0ffa3deae7779ff86c518b (patch)
tree6ddb4dbb2a4a800d9dbf14fa279fe1581a4925c4
parentc9c50ba84127d31e71d61c7ad92e2166e9079dff (diff)
downloadserd-5ab74d90a99cc72d9c0ffa3deae7779ff86c518b.tar.gz
serd-5ab74d90a99cc72d9c0ffa3deae7779ff86c518b.tar.bz2
serd-5ab74d90a99cc72d9c0ffa3deae7779ff86c518b.zip
Fix node alignment on 32-bit ARM
-rw-r--r--src/node.c2
-rw-r--r--src/reader.c1
-rw-r--r--src/stack.h4
3 files changed, 5 insertions, 2 deletions
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 <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;