diff options
Diffstat (limited to 'src/H5Odtype.c')
-rw-r--r-- | src/H5Odtype.c | 447 |
1 files changed, 205 insertions, 242 deletions
diff --git a/src/H5Odtype.c b/src/H5Odtype.c index cad92d9..abab4cf 100644 --- a/src/H5Odtype.c +++ b/src/H5Odtype.c @@ -92,6 +92,7 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt) unsigned flags, version; int i, j; size_t z; + herr_t ret_value=SUCCEED; /* Return value */ FUNC_ENTER_NOINIT(H5O_dtype_decode_helper); @@ -102,10 +103,8 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt) /* decode */ UINT32DECODE(*pp, flags); version = (flags>>4) & 0x0f; - if (version!=H5O_DTYPE_VERSION_COMPAT && version!=H5O_DTYPE_VERSION_UPDATED) { - HRETURN_ERROR(H5E_DATATYPE, H5E_CANTLOAD, FAIL, - "bad version number for data type message"); - } + if (version!=H5O_DTYPE_VERSION_COMPAT && version!=H5O_DTYPE_VERSION_UPDATED) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTLOAD, FAIL, "bad version number for data type message"); dt->type = (H5T_class_t)(flags & 0x0f); flags >>= 8; UINT32DECODE(*pp, dt->size); @@ -140,10 +139,8 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt) */ z = flags & 0xff; assert(0==(z&0x7)); /*must be aligned*/ - if (NULL==(dt->u.opaque.tag=H5MM_malloc(z+1))) { - HRETURN_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, - "memory allocation failed"); - } + if (NULL==(dt->u.opaque.tag=H5MM_malloc(z+1))) + HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); HDmemcpy(dt->u.opaque.tag, *pp, z); dt->u.opaque.tag[z] = '\0'; *pp += z; @@ -168,8 +165,7 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt) dt->u.atomic.u.f.norm = H5T_NORM_IMPLIED; break; default: - HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "unknown floating-point normalization"); + HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "unknown floating-point normalization"); } dt->u.atomic.u.f.sign = (flags >> 8) & 0xff; UINT16DECODE(*pp, dt->u.atomic.offset); @@ -192,10 +188,8 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt) dt->u.compnd.nalloc = dt->u.compnd.nmembs; dt->u.compnd.memb = H5MM_calloc(dt->u.compnd.nalloc* sizeof(H5T_cmemb_t)); - if (NULL==dt->u.compnd.memb) { - HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, - "memory allocation failed"); - } + if (NULL==dt->u.compnd.memb) + HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); for (i = 0; i < dt->u.compnd.nmembs; i++) { int ndims=0; /* Number of dimensions of the array field */ hsize_t dim[H5O_LAYOUT_NDIMS]; /* Dimensions of the array */ @@ -234,10 +228,8 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt) /* Allocate space for the field's datatype */ temp_type = H5FL_ALLOC (H5T_t,1); - if (NULL==temp_type) { - HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, - "memory allocation failed"); - } + if (NULL==temp_type) + HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); temp_type->ent.header = HADDR_UNDEF; /* Decode the field's datatype information */ @@ -245,7 +237,7 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt) for (j=0; j<=i; j++) H5MM_xfree(dt->u.compnd.memb[j].name); H5MM_xfree(dt->u.compnd.memb); - HRETURN_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, "unable to decode member type"); + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, "unable to decode member type"); } /* Go create the array datatype now, for older versions of the datatype message */ @@ -261,7 +253,7 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt) for (j=0; j<=i; j++) H5MM_xfree(dt->u.compnd.memb[j].name); H5MM_xfree(dt->u.compnd.memb); - HRETURN_ERROR(H5E_DATATYPE, H5E_CANTREGISTER, FAIL, "unable to create array datatype"); + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTREGISTER, FAIL, "unable to create array datatype"); } /* Close the base type for the array */ @@ -297,22 +289,15 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt) */ dt->u.enumer.nmembs = dt->u.enumer.nalloc = flags & 0xffff; assert(dt->u.enumer.nmembs>=0); - if (NULL==(dt->parent=H5FL_ALLOC(H5T_t,1))) { - HRETURN_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, - "memory allocation failed"); - } + if (NULL==(dt->parent=H5FL_ALLOC(H5T_t,1))) + HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); dt->parent->ent.header = HADDR_UNDEF; - if (H5O_dtype_decode_helper(f, pp, dt->parent)<0) { - HRETURN_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, - "unable to decode parent data type"); - } - if (NULL==(dt->u.enumer.name=H5MM_calloc(dt->u.enumer.nalloc * - sizeof(char*))) || - NULL==(dt->u.enumer.value=H5MM_calloc(dt->u.enumer.nalloc * - dt->parent->size))) { - HRETURN_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, - "memory allocation failed"); - } + if (H5O_dtype_decode_helper(f, pp, dt->parent)<0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, "unable to decode parent data type"); + if (NULL==(dt->u.enumer.name=H5MM_calloc(dt->u.enumer.nalloc * sizeof(char*))) || + NULL==(dt->u.enumer.value=H5MM_calloc(dt->u.enumer.nalloc * + dt->parent->size))) + HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); /* Names, each a multiple of 8 with null termination */ for (i=0; i<dt->u.enumer.nmembs; i++) { @@ -359,18 +344,15 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt) /* Decode base type of VL information */ if (NULL==(dt->parent = H5FL_ALLOC(H5T_t,1))) - HRETURN_ERROR (H5E_DATATYPE, H5E_NOSPACE, FAIL, - "memory allocation failed"); + HGOTO_ERROR (H5E_DATATYPE, H5E_NOSPACE, FAIL, "memory allocation failed"); dt->parent->ent.header = HADDR_UNDEF; if (H5O_dtype_decode_helper(f, pp, dt->parent)<0) - HRETURN_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, - "unable to decode VL parent type"); + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, "unable to decode VL parent type"); dt->force_conv=TRUE; /* Mark this type as on disk */ if (H5T_vlen_mark(dt, f, H5T_VLEN_DISK)<0) - HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, - "invalid VL location"); + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "invalid VL location"); break; case H5T_TIME: /* Time datatypes */ @@ -400,10 +382,10 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt) /* Decode base type of array */ if (NULL==(dt->parent = H5FL_ALLOC(H5T_t,1))) - HRETURN_ERROR (H5E_DATATYPE, H5E_NOSPACE, FAIL, "memory allocation failed"); + HGOTO_ERROR (H5E_DATATYPE, H5E_NOSPACE, FAIL, "memory allocation failed"); dt->parent->ent.header = HADDR_UNDEF; if (H5O_dtype_decode_helper(f, pp, dt->parent)<0) - HRETURN_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, "unable to decode VL parent type"); + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, "unable to decode VL parent type"); /* * Set the "force conversion" flag if a VL base datatype is used or @@ -414,11 +396,11 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt) break; default: - HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "unknown datatype class found"); + HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "unknown datatype class found"); } - FUNC_LEAVE(SUCCEED); +done: + FUNC_LEAVE(ret_value); } @@ -444,6 +426,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) char *hdr = (char *)*pp; int i, j; size_t n, z, aligned; + herr_t ret_value=SUCCEED; /* Return value */ FUNC_ENTER_NOINIT(H5O_dtype_encode_helper); @@ -467,8 +450,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) flags |= 0x01; break; default: - HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "byte order is not supported in file format yet"); + HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "byte order is not supported in file format yet"); } switch (dt->u.atomic.lsb_pad) { @@ -478,8 +460,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) flags |= 0x02; break; default: - HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "bit padding is not supported in file format yet"); + HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "bit padding is not supported in file format yet"); } switch (dt->u.atomic.msb_pad) { @@ -489,8 +470,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) flags |= 0x04; break; default: - HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "bit padding is not supported in file format yet"); + HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "bit padding is not supported in file format yet"); } switch (dt->u.atomic.u.i.sign) { @@ -500,8 +480,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) flags |= 0x08; break; default: - HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "sign scheme is not supported in file format yet"); + HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "sign scheme is not supported in file format yet"); } UINT16ENCODE(*pp, dt->u.atomic.offset); @@ -519,8 +498,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) flags |= 0x01; break; default: - HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "byte order is not supported in file format yet"); + HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "byte order is not supported in file format yet"); } switch (dt->u.atomic.lsb_pad) { @@ -530,8 +508,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) flags |= 0x02; break; default: - HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "bit padding is not supported in file format yet"); + HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "bit padding is not supported in file format yet"); } switch (dt->u.atomic.msb_pad) { @@ -541,8 +518,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) flags |= 0x04; break; default: - HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "bit padding is not supported in file format yet"); + HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "bit padding is not supported in file format yet"); } UINT16ENCODE(*pp, dt->u.atomic.offset); @@ -574,8 +550,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) flags |= 0x01; break; default: - HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "byte order is not supported in file format yet"); + HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "byte order is not supported in file format yet"); } switch (dt->u.atomic.lsb_pad) { @@ -585,8 +560,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) flags |= 0x02; break; default: - HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "bit padding is not supported in file format yet"); + HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "bit padding is not supported in file format yet"); } switch (dt->u.atomic.msb_pad) { @@ -596,8 +570,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) flags |= 0x04; break; default: - HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "bit padding is not supported in file format yet"); + HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "bit padding is not supported in file format yet"); } switch (dt->u.atomic.u.f.pad) { @@ -607,8 +580,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) flags |= 0x08; break; default: - HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "bit padding is not supported in file format yet"); + HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "bit padding is not supported in file format yet"); } switch (dt->u.atomic.u.f.norm) { @@ -621,8 +593,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) flags |= 0x20; break; default: - HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "normalization scheme is not supported in file format yet"); + HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "normalization scheme is not supported in file format yet"); } flags |= (dt->u.atomic.u.f.sign << 8) & 0xff00; @@ -681,10 +652,8 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) } /* end if */ /* Subtype */ - if (H5O_dtype_encode_helper(pp, dt->u.compnd.memb[i].type)<0) { - HRETURN_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL, - "unable to encode member type"); - } + if (H5O_dtype_encode_helper(pp, dt->u.compnd.memb[i].type)<0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL, "unable to encode member type"); } break; @@ -695,10 +664,8 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) flags = dt->u.enumer.nmembs & 0xffff; /* Parent type */ - if (H5O_dtype_encode_helper(pp, dt->parent)<0) { - HRETURN_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL, - "unable to encode parent data type"); - } + if (H5O_dtype_encode_helper(pp, dt->parent)<0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL, "unable to encode parent data type"); /* Names, each a multiple of eight bytes */ for (i=0; i<dt->u.enumer.nmembs; i++) { @@ -740,9 +707,8 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) } /* end if */ /* Encode base type of VL information */ - if (H5O_dtype_encode_helper(pp, dt->parent)<0) { - HRETURN_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL, "unable to encode VL parent type"); - } + if (H5O_dtype_encode_helper(pp, dt->parent)<0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL, "unable to encode VL parent type"); break; case H5T_TIME: /* Time datatypes... */ @@ -753,8 +719,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) flags |= 0x01; break; default: - HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "byte order is not supported in file format yet"); + HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "byte order is not supported in file format yet"); } UINT16ENCODE(*pp, dt->u.atomic.prec); break; @@ -781,7 +746,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) /* Encode base type of array's information */ if (H5O_dtype_encode_helper(pp, dt->parent)<0) - HRETURN_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL, "unable to encode VL parent type"); + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL, "unable to encode VL parent type"); break; default: @@ -794,9 +759,11 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) *hdr++ = (flags >> 8) & 0xff; *hdr++ = (flags >> 16) & 0xff; - FUNC_LEAVE(SUCCEED); +done: + FUNC_LEAVE(ret_value); } + /*-------------------------------------------------------------------------- NAME H5O_dtype_decode @@ -820,26 +787,33 @@ H5O_dtype_decode(H5F_t *f, const uint8_t *p, H5O_shared_t UNUSED *sh) { H5T_t *dt = NULL; + void *ret_value; /* Return value */ FUNC_ENTER_NOAPI(H5O_dtype_decode, NULL); /* check args */ assert(p); - if (NULL==(dt = H5FL_ALLOC(H5T_t,1))) { - HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, - "memory allocation failed"); - } + if (NULL==(dt = H5FL_ALLOC(H5T_t,1))) + HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); dt->ent.header = HADDR_UNDEF; - if (H5O_dtype_decode_helper(f, &p, dt) < 0) { - H5FL_FREE(H5T_t,dt); - HRETURN_ERROR(H5E_DATATYPE, H5E_CANTDECODE, NULL, - "can't decode type"); - } - FUNC_LEAVE(dt); + if (H5O_dtype_decode_helper(f, &p, dt) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTDECODE, NULL, "can't decode type"); + + /* Set return value */ + ret_value=dt; + +done: + if(ret_value==NULL) { + if(dt!=NULL) + H5FL_FREE(H5T_t,dt); + } /* end if */ + + FUNC_LEAVE(ret_value); } + /*-------------------------------------------------------------------------- NAME H5O_dtype_encode @@ -861,6 +835,7 @@ static herr_t H5O_dtype_encode(H5F_t UNUSED *f, uint8_t *p, const void *mesg) { const H5T_t *dt = (const H5T_t *) mesg; + herr_t ret_value=SUCCEED; /* Return value */ FUNC_ENTER_NOAPI(H5O_dtype_encode, FAIL); @@ -870,13 +845,14 @@ H5O_dtype_encode(H5F_t UNUSED *f, uint8_t *p, const void *mesg) assert(dt); /* encode */ - if (H5O_dtype_encode_helper(&p, dt) < 0) { - HRETURN_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL, - "can't encode type"); - } + if (H5O_dtype_encode_helper(&p, dt) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL, "can't encode type"); + +done: FUNC_LEAVE(SUCCEED); } + /*-------------------------------------------------------------------------- NAME H5O_dtype_copy @@ -899,6 +875,7 @@ H5O_dtype_copy(const void *_src, void *_dst) { const H5T_t *src = (const H5T_t *) _src; H5T_t *dst = NULL; + void *ret_value; /* Return value */ FUNC_ENTER_NOAPI(H5O_dtype_copy, NULL); @@ -907,7 +884,7 @@ H5O_dtype_copy(const void *_src, void *_dst) /* copy */ if (NULL == (dst = H5T_copy(src, H5T_COPY_ALL))) - HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, NULL, "can't copy type"); + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, NULL, "can't copy type"); /* was result already allocated? */ if (_dst) { @@ -915,9 +892,15 @@ H5O_dtype_copy(const void *_src, void *_dst) H5FL_FREE(H5T_t,dst); dst = (H5T_t *) _dst; } - FUNC_LEAVE((void *) dst); + + /* Set return value */ + ret_value=dst; + +done: + FUNC_LEAVE(ret_value); } + /*-------------------------------------------------------------------------- NAME H5O_dtype_size @@ -977,9 +960,8 @@ H5O_dtype_size(H5F_t *f, const void *mesg) case H5T_ENUM: ret_value += H5O_dtype_size(f, dt->parent); - for (i=0; i<dt->u.enumer.nmembs; i++) { + for (i=0; i<dt->u.enumer.nmembs; i++) ret_value += ((HDstrlen(dt->u.enumer.name[i])+8)/8)*8; - } ret_value += dt->u.enumer.nmembs * dt->parent->size; break; @@ -1005,6 +987,7 @@ H5O_dtype_size(H5F_t *f, const void *mesg) FUNC_LEAVE(ret_value); } + /*------------------------------------------------------------------------- * Function: H5O_dtype_reset @@ -1026,19 +1009,20 @@ H5O_dtype_reset(void *_mesg) { H5T_t *dt = (H5T_t *) _mesg; H5T_t *tmp = NULL; + herr_t ret_value=SUCCEED; /* Return value */ FUNC_ENTER_NOAPI(H5O_dtype_reset, FAIL); if (dt) { - if (NULL==(tmp = H5FL_ALLOC(H5T_t,0))) { - HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, - "memory allocation failed"); - } + if (NULL==(tmp = H5FL_ALLOC(H5T_t,0))) + HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); *tmp = *dt; H5T_close(tmp); HDmemset(dt, 0, sizeof(H5T_t)); } - FUNC_LEAVE(SUCCEED); + +done: + FUNC_LEAVE(ret_value); } @@ -1089,6 +1073,7 @@ H5O_dtype_get_share(H5F_t UNUSED *f, const void *_mesg, H5O_shared_t *sh/*out*/) { const H5T_t *dt = (const H5T_t *)_mesg; + herr_t ret_value=SUCCEED; /* Return value */ FUNC_ENTER_NOAPI(H5O_dtype_get_share, FAIL); @@ -1099,12 +1084,11 @@ H5O_dtype_get_share(H5F_t UNUSED *f, const void *_mesg, assert (H5T_STATE_NAMED==dt->state || H5T_STATE_OPEN==dt->state); sh->in_gh = FALSE; sh->u.ent = dt->ent; - } else { - HRETURN_ERROR (H5E_DATATYPE, H5E_CANTINIT, FAIL, - "data type is not sharable"); - } + } else + HGOTO_ERROR (H5E_DATATYPE, H5E_CANTINIT, FAIL, "data type is not sharable"); - FUNC_LEAVE (SUCCEED); +done: + FUNC_LEAVE (ret_value); } @@ -1140,6 +1124,7 @@ H5O_dtype_set_share (H5F_t UNUSED *f, void *_mesg/*in,out*/, FUNC_LEAVE (SUCCEED); } + /*-------------------------------------------------------------------------- NAME H5O_dtype_debug @@ -1179,43 +1164,43 @@ H5O_dtype_debug(H5F_t *f, const void *mesg, FILE *stream, assert(fwidth >= 0); switch (dt->type) { - case H5T_INTEGER: - s = "integer"; - break; - case H5T_FLOAT: - s = "floating-point"; - break; - case H5T_TIME: - s = "date and time"; - break; - case H5T_STRING: - s = "text string"; - break; - case H5T_BITFIELD: - s = "bit field"; - break; - case H5T_OPAQUE: - s = "opaque"; - break; - case H5T_COMPOUND: - s = "compound"; - break; - case H5T_REFERENCE: - s = "reference"; - break; - case H5T_ENUM: - s = "enum"; - break; - case H5T_ARRAY: - s = "array"; - break; - case H5T_VLEN: - s = "variable-length sequence"; - break; - default: - sprintf(buf, "H5T_CLASS_%d", (int) (dt->type)); - s = buf; - break; + case H5T_INTEGER: + s = "integer"; + break; + case H5T_FLOAT: + s = "floating-point"; + break; + case H5T_TIME: + s = "date and time"; + break; + case H5T_STRING: + s = "text string"; + break; + case H5T_BITFIELD: + s = "bit field"; + break; + case H5T_OPAQUE: + s = "opaque"; + break; + case H5T_COMPOUND: + s = "compound"; + break; + case H5T_REFERENCE: + s = "reference"; + break; + case H5T_ENUM: + s = "enum"; + break; + case H5T_ARRAY: + s = "array"; + break; + case H5T_VLEN: + s = "variable-length sequence"; + break; + default: + sprintf(buf, "H5T_CLASS_%d", (int) (dt->type)); + s = buf; + break; } fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, "Type class:", @@ -1237,28 +1222,6 @@ H5O_dtype_debug(H5F_t *f, const void *mesg, FILE *stream, fprintf(stream, "%*s%-*s %lu\n", indent+3, "", MAX(0, fwidth-3), "Byte offset:", (unsigned long) (dt->u.compnd.memb[i].offset)); -#ifdef OLD_WAY - fprintf(stream, "%*s%-*s %d%s\n", indent+3, "", MAX(0, fwidth-3), - "Dimensionality:", - dt->u.compnd.memb[i].ndims, - 0==dt->u.compnd.memb[i].ndims?" (scalar)":""); - if (dt->u.compnd.memb[i].ndims>0) { - fprintf(stream, "%*s%-*s {", indent+3, "", MAX(0, fwidth-3), - "Size:"); - for (j=0; j<dt->u.compnd.memb[i].ndims; j++) { - fprintf(stream, "%s%lu", j?", ":"", - (unsigned long)(dt->u.compnd.memb[i].dim[j])); - } - fprintf(stream, "}\n"); - fprintf(stream, "%*s%-*s {", indent+3, "", MAX(0, fwidth-3), - "Permutation:"); - for (j=0; j<dt->u.compnd.memb[i].ndims; j++) { - fprintf(stream, "%s%lu", j?", ":"", - (unsigned long)(dt->u.compnd.memb[i].perm[j])); - } - fprintf(stream, "}\n"); - } -#endif /* OLD_WAY */ H5O_dtype_debug(f, dt->u.compnd.memb[i].type, stream, indent+3, MAX(0, fwidth - 3)); } @@ -1309,22 +1272,22 @@ H5O_dtype_debug(H5F_t *f, const void *mesg, FILE *stream, H5O_dtype_debug(f, dt->parent, stream, indent+3, MAX(0, fwidth-3)); } else { switch (dt->u.atomic.order) { - case H5T_ORDER_LE: - s = "little endian"; - break; - case H5T_ORDER_BE: - s = "big endian"; - break; - case H5T_ORDER_VAX: - s = "VAX"; - break; - case H5T_ORDER_NONE: - s = "none"; - break; - default: - sprintf(buf, "H5T_ORDER_%d", dt->u.atomic.order); - s = buf; - break; + case H5T_ORDER_LE: + s = "little endian"; + break; + case H5T_ORDER_BE: + s = "big endian"; + break; + case H5T_ORDER_VAX: + s = "VAX"; + break; + case H5T_ORDER_NONE: + s = "none"; + break; + default: + sprintf(buf, "H5T_ORDER_%d", dt->u.atomic.order); + s = buf; + break; } fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, "Byte order:", @@ -1341,66 +1304,66 @@ H5O_dtype_debug(H5F_t *f, const void *mesg, FILE *stream, 1==dt->u.atomic.offset?"":"s"); switch (dt->u.atomic.lsb_pad) { - case H5T_PAD_ZERO: - s = "zero"; - break; - case H5T_PAD_ONE: - s = "one"; - break; - default: - s = "pad?"; - break; + case H5T_PAD_ZERO: + s = "zero"; + break; + case H5T_PAD_ONE: + s = "one"; + break; + default: + s = "pad?"; + break; } fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, "Low pad type:", s); switch (dt->u.atomic.msb_pad) { - case H5T_PAD_ZERO: - s = "zero"; - break; - case H5T_PAD_ONE: - s = "one"; - break; - default: - s = "pad?"; - break; + case H5T_PAD_ZERO: + s = "zero"; + break; + case H5T_PAD_ONE: + s = "one"; + break; + default: + s = "pad?"; + break; } fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, "High pad type:", s); if (H5T_FLOAT == dt->type) { switch (dt->u.atomic.u.f.pad) { - case H5T_PAD_ZERO: - s = "zero"; - break; - case H5T_PAD_ONE: - s = "one"; - break; - default: - if (dt->u.atomic.u.f.pad < 0) { - sprintf(buf, "H5T_PAD_%d", -(dt->u.atomic.u.f.pad)); - } else { - sprintf(buf, "bit-%d", dt->u.atomic.u.f.pad); - } - s = buf; - break; + case H5T_PAD_ZERO: + s = "zero"; + break; + case H5T_PAD_ONE: + s = "one"; + break; + default: + if (dt->u.atomic.u.f.pad < 0) { + sprintf(buf, "H5T_PAD_%d", -(dt->u.atomic.u.f.pad)); + } else { + sprintf(buf, "bit-%d", dt->u.atomic.u.f.pad); + } + s = buf; + break; } fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, "Internal pad type:", s); switch (dt->u.atomic.u.f.norm) { - case H5T_NORM_IMPLIED: - s = "implied"; - break; - case H5T_NORM_MSBSET: - s = "msb set"; - break; - case H5T_NORM_NONE: - s = "none"; - break; - default: - sprintf(buf, "H5T_NORM_%d", (int) (dt->u.atomic.u.f.norm)); - s = buf; + case H5T_NORM_IMPLIED: + s = "implied"; + break; + case H5T_NORM_MSBSET: + s = "msb set"; + break; + case H5T_NORM_NONE: + s = "none"; + break; + default: + sprintf(buf, "H5T_NORM_%d", (int) (dt->u.atomic.u.f.norm)); + s = buf; } fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, "Normalization:", s); @@ -1431,16 +1394,16 @@ H5O_dtype_debug(H5F_t *f, const void *mesg, FILE *stream, } else if (H5T_INTEGER == dt->type) { switch (dt->u.atomic.u.i.sign) { - case H5T_SGN_NONE: - s = "none"; - break; - case H5T_SGN_2: - s = "2's comp"; - break; - default: - sprintf(buf, "H5T_SGN_%d", (int) (dt->u.atomic.u.i.sign)); - s = buf; - break; + case H5T_SGN_NONE: + s = "none"; + break; + case H5T_SGN_2: + s = "2's comp"; + break; + default: + sprintf(buf, "H5T_SGN_%d", (int) (dt->u.atomic.u.i.sign)); + s = buf; + break; } fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, "Sign scheme:", s); |