summaryrefslogtreecommitdiffstats
path: root/src/H5Odtype.c
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>1998-07-08 16:46:16 (GMT)
committerRobb Matzke <matzke@llnl.gov>1998-07-08 16:46:16 (GMT)
commit6a1bea937dd076a9d7ce56179e3daa9bb78b8f86 (patch)
tree74aee19b5f80eafc8508edb3b6002f2e3be011e7 /src/H5Odtype.c
parenta8e53d788448a10071799ded2c8d78dddbc53d63 (diff)
downloadhdf5-6a1bea937dd076a9d7ce56179e3daa9bb78b8f86.zip
hdf5-6a1bea937dd076a9d7ce56179e3daa9bb78b8f86.tar.gz
hdf5-6a1bea937dd076a9d7ce56179e3daa9bb78b8f86.tar.bz2
[svn-r469] Changes since 19980707
---------------------- ./bin/trace ./src/H5.c Added tracing support for H5S_seloper_t and H5S_class_t. ./src/H5Sselect.c ./src/H5S.c Added tracing statements that weren't inserted previously because of formatting problems. ./src/H5T.c ./src/H5Tconv.c ./src/H5Tpkg.h ./src/H5Tprivate.h ./src/H5Tpublic.h ./test/cmpd_dset.c Added H5Tinsert_array() for inserting an array member into a compound data type. Added support to the struct conversion function for member arrays. The index permutation is not supported yet in the conversion (source and destination must have the same permutations).
Diffstat (limited to 'src/H5Odtype.c')
-rw-r--r--src/H5Odtype.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/H5Odtype.c b/src/H5Odtype.c
index 6ff75d9..aefa335 100644
--- a/src/H5Odtype.c
+++ b/src/H5Odtype.c
@@ -160,14 +160,16 @@ H5O_dtype_decode_helper(const uint8 **pp, H5T_t *dt)
dt->u.compnd.nmembs = flags & 0xffff;
assert(dt->u.compnd.nmembs > 0);
dt->u.compnd.nalloc = dt->u.compnd.nmembs;
- dt->u.compnd.memb = H5MM_calloc(dt->u.compnd.nalloc*sizeof(H5T_member_t));
+ dt->u.compnd.memb = H5MM_calloc(dt->u.compnd.nalloc*
+ sizeof(H5T_member_t));
if (NULL==dt->u.compnd.memb) {
HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL,
"memory allocation failed");
}
for (i = 0; i < dt->u.compnd.nmembs; i++) {
dt->u.compnd.memb[i].name = H5MM_xstrdup((const char *)*pp);
- *pp += ((HDstrlen((const char *)*pp) + 8) / 8) * 8; /*multiple of 8 w/ null terminator */
+ /*multiple of 8 w/ null terminator */
+ *pp += ((HDstrlen((const char *)*pp) + 8) / 8) * 8;
UINT32DECODE(*pp, dt->u.compnd.memb[i].offset);
dt->u.compnd.memb[i].ndims = *(*pp)++;
assert(dt->u.compnd.memb[i].ndims <= 4);
@@ -194,6 +196,12 @@ H5O_dtype_decode_helper(const uint8 **pp, H5T_t *dt)
HRETURN_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL,
"can't decode member type");
}
+
+ /* Total member size */
+ dt->u.compnd.memb[i].size = dt->u.compnd.memb[i].type->size;
+ for (j=0; j<dt->u.compnd.memb[i].ndims; j++) {
+ dt->u.compnd.memb[i].size *= dt->u.compnd.memb[i].dim[j];
+ }
}
break;