From 7a613aa2758ee6b17f51e3bd285ee16b4eaa1e1a Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 19 Oct 2010 02:52:21 +0000 Subject: Fix alignment restrictions. Align Atoms to 32-bits, since the LV2_Atom header is only 32-bit aligned so the payload would not be 64-bit aligned even if the LV2_Atom header is (note the same problem applies to events, oops). --- ext/atom.lv2/atom-helpers.h | 4 ++-- ext/atom.lv2/atom.ttl | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'ext') diff --git a/ext/atom.lv2/atom-helpers.h b/ext/atom.lv2/atom-helpers.h index f4908e3..e14a1e9 100644 --- a/ext/atom.lv2/atom-helpers.h +++ b/ext/atom.lv2/atom-helpers.h @@ -37,11 +37,11 @@ */ -/** Pad a size to 64 bits (for atom sizes) */ +/** Pad a size to 4 bytes (32 bits) */ static inline uint16_t lv2_atom_pad_size(uint16_t size) { - return (size + 7) & (~7); + return (size + 3) & (~3); } typedef LV2_Atom_Property* LV2_Atom_Dict_Iter; diff --git a/ext/atom.lv2/atom.ttl b/ext/atom.lv2/atom.ttl index 9e8d043..9158328 100644 --- a/ext/atom.lv2/atom.ttl +++ b/ext/atom.lv2/atom.ttl @@ -59,6 +59,8 @@ with a time stamp header prepended. Atoms SHOULD be used anywhere a "value" needs to be stored or communicated, to allow implementations to be polymorphic and extensible. +Atoms (the beginning of the LV2_Atom header) MUST be 32-bit aligned. + Optionally, the host MAY support "Blobs", which are dynamically allocated chunks of memory that (unlike Atoms) are not necessarily POD. Blobs are accessed via references, which are a special case of Atom that always have -- cgit v1.2.1