return true;
 } CYCatch(false) }
 
+template <typename Type_>
+static void Align(Type_ &data, size_t size) {
+    data = reinterpret_cast<Type_>((reinterpret_cast<uintptr_t>(data) + (size - 1)) & ~(size - 1));
+}
+
 static bool Index_(CYPool &pool, JSContextRef context, Struct_privateData *internal, JSStringRef property, ssize_t &index, uint8_t *&base) {
     Type_privateData *typical(internal->type_);
     sig::Type *type(typical->type_);
     ffi_type **elements(typical->GetFFI()->elements);
 
     base = reinterpret_cast<uint8_t *>(internal->value_);
-    for (ssize_t local(0); local != index; ++local)
+    for (ssize_t local(0); local != index; ++local) {
+        Align(base, elements[local]->alignment);
         base += elements[local]->size;
+    }
 
+    Align(base, elements[index]->alignment);
     return true;
 }