aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2019-04-13 18:47:36 +0100
committerDavid Robillard <d@drobilla.net>2019-04-13 19:48:23 +0200
commit72b0caa0ca029b83a5a1ad87d9035faea7897c72 (patch)
treeaa2baae1a97e49db76328b45d855bf1ab58ee814
parent00eec656ceb6d2ce7807d8da57fcad41367fa490 (diff)
downloadserd-72b0caa0ca029b83a5a1ad87d9035faea7897c72.tar.gz
serd-72b0caa0ca029b83a5a1ad87d9035faea7897c72.tar.bz2
serd-72b0caa0ca029b83a5a1ad87d9035faea7897c72.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 2f21858e..3a44a954 100644
--- a/src/node.c
+++ b/src/node.c
@@ -288,7 +288,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((intptr_t)copy % serd_node_align == 0);
memcpy(copy, node, size);
return copy;
diff --git a/src/reader.c b/src/reader.c
index 95508849..50784ffc 100644
--- a/src/reader.c
+++ b/src/reader.c
@@ -87,6 +87,7 @@ push_node_padded(SerdReader* reader, size_t maxlen,
void* mem = serd_stack_push_aligned(
&reader->stack, sizeof(SerdNode) + maxlen + 1, sizeof(SerdNode));
+ assert((intptr_t)mem % sizeof(SerdNode) == 0);
if (!mem) {
return NULL;
}
diff --git a/src/stack.h b/src/stack.h
index cf2d4f26..3610d0c3 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(1, size);
+ stack.buf = (char*)serd_calloc_aligned(size, sizeof(SerdNode));
stack.buf_size = size;
stack.size = SERD_STACK_BOTTOM;
return stack;