diff options
author | David Robillard <d@drobilla.net> | 2010-10-19 02:52:21 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2010-10-19 02:52:21 +0000 |
commit | 7a613aa2758ee6b17f51e3bd285ee16b4eaa1e1a (patch) | |
tree | 387ebbe2e9cb0283da3ae0e747671bf3aee0e134 | |
parent | 5d5929d732062591213f156433d0bfbff4080a9c (diff) | |
download | lv2-7a613aa2758ee6b17f51e3bd285ee16b4eaa1e1a.tar.xz |
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).
-rw-r--r-- | ext/atom.lv2/atom-helpers.h | 4 | ||||
-rw-r--r-- | ext/atom.lv2/atom.ttl | 2 |
2 files changed, 4 insertions, 2 deletions
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 |