diff options
-rw-r--r-- | src/H5Tnative.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/H5Tnative.c b/src/H5Tnative.c index ce2c141..5b685b1 100644 --- a/src/H5Tnative.c +++ b/src/H5Tnative.c @@ -317,8 +317,24 @@ H5T_get_native_type(H5T_t *dtype, H5T_direction_t direction, size_t *struct_alig HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot insert member to compound datatype") } - /* Update size, offset and compound alignment for parent in the case of - * nested compound type. */ + /* Update size, offset and compound alignment for parent in the case of + * nested compound type. The alignment for a compound type as one field in + * a compound type is the biggest compound alignment among all its members. + * i.g. in the structure + * typedef struct s1 { + * char c; + * int i; + * s2 st; + * unsigned long long l; + * } s1; + * typedef struct s2 { + * short c2; + * long l2; + * long long ll2; + * } s2; + * The alignment for ST in S1 is the biggest structure alignment of all the + * members of S2, which is probably the LL2 of 'long long'. -SLU 2010/4/28 + */ if(H5T_cmp_offset(comp_size, offset, children_size, (size_t)1, children_st_align, struct_align) < 0) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot compute compound offset") |