summaryrefslogtreecommitdiffstats
path: root/src/H5T.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2009-12-09 18:16:07 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2009-12-09 18:16:07 (GMT)
commitadce7dfd846901f3164d446cf7443747ddefc492 (patch)
treecf036217f8b769eab1c2bd7d537c4112df282440 /src/H5T.c
parent58c8ac33a81b6feed41bab0db6ac3d7dbe98a9be (diff)
downloadhdf5-adce7dfd846901f3164d446cf7443747ddefc492.zip
hdf5-adce7dfd846901f3164d446cf7443747ddefc492.tar.gz
hdf5-adce7dfd846901f3164d446cf7443747ddefc492.tar.bz2
[svn-r17978] Description:
Simplify checking for detecting variable-length strings. Tested on: Mac OS X/32 10.6.2 (amazon) debug & production Too minor to require h5committest
Diffstat (limited to 'src/H5T.c')
-rw-r--r--src/H5T.c24
1 files changed, 9 insertions, 15 deletions
diff --git a/src/H5T.c b/src/H5T.c
index bbd3854..de917f6 100644
--- a/src/H5T.c
+++ b/src/H5T.c
@@ -1913,12 +1913,9 @@ H5Tdetect_class(hid_t type, H5T_class_t cls)
if(!(cls > H5T_NO_CLASS && cls < H5T_NCLASSES))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5T_NO_CLASS, "not a datatype class")
- /* Set return value. Consider VL string as a string for API, as a VL for
- * internal use. */
- if(H5T_IS_VL_STRING(dt->shared))
- ret_value = (H5T_STRING == cls);
- else
- ret_value = H5T_detect_class(dt, cls, TRUE);
+ /* Set return value */
+ if((ret_value = H5T_detect_class(dt, cls, TRUE)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTGET, H5T_NO_CLASS, "can't get datatype class")
done:
FUNC_LEAVE_API(ret_value)
@@ -1948,7 +1945,7 @@ done:
*-------------------------------------------------------------------------
*/
htri_t
-H5T_detect_class (const H5T_t *dt, H5T_class_t cls, hbool_t from_api)
+H5T_detect_class(const H5T_t *dt, H5T_class_t cls, hbool_t from_api)
{
unsigned i;
htri_t ret_value=FALSE; /* Return value */
@@ -1958,9 +1955,11 @@ H5T_detect_class (const H5T_t *dt, H5T_class_t cls, hbool_t from_api)
assert(dt);
assert(cls>H5T_NO_CLASS && cls<H5T_NCLASSES);
- /* Consider VL string as a string for API, as a VL for internal use. The same
- * check is also in H5Tdetect_class. Do it again to check members of nested
- * compound type and base type of array and VL type. */
+ /* Consider VL string as a string for API, as a VL for internal use. */
+ /* (note that this check must be performed before checking if the VL
+ * string belongs to the H5T_VLEN class, which would otherwise return
+ * true. -QAK)
+ */
if(from_api && H5T_IS_VL_STRING(dt->shared))
HGOTO_DONE(H5T_STRING == cls);
@@ -1974,11 +1973,6 @@ H5T_detect_class (const H5T_t *dt, H5T_class_t cls, hbool_t from_api)
for (i=0; i<dt->shared->u.compnd.nmembs; i++) {
htri_t nested_ret; /* Return value from nested call */
- /* Consider VL string as a string for API, as a VL for internal use.
- * Do it again here to check members of compound type. */
- if(from_api && H5T_IS_VL_STRING(dt->shared->u.compnd.memb[i].type->shared))
- HGOTO_DONE(H5T_STRING == cls);
-
/* Check if this field's type is the correct type */
if(dt->shared->u.compnd.memb[i].type->shared->type==cls)
HGOTO_DONE(TRUE);