aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2010-10-19 02:52:21 +0000
committerDavid Robillard <d@drobilla.net>2010-10-19 02:52:21 +0000
commit7a613aa2758ee6b17f51e3bd285ee16b4eaa1e1a (patch)
tree387ebbe2e9cb0283da3ae0e747671bf3aee0e134
parent5d5929d732062591213f156433d0bfbff4080a9c (diff)
downloadlv2-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.h4
-rw-r--r--ext/atom.lv2/atom.ttl2
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