diff options
Diffstat (limited to 'src/H5Gloc.c')
-rw-r--r-- | src/H5Gloc.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/H5Gloc.c b/src/H5Gloc.c index 58ae55a..2a83f15 100644 --- a/src/H5Gloc.c +++ b/src/H5Gloc.c @@ -174,11 +174,19 @@ H5G_loc_real(void *obj, H5I_type_t type, H5G_loc_t *loc) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to get path of group") break; case H5I_DATATYPE: - if(NULL == (loc->oloc = H5T_oloc((H5T_t *)obj))) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to get object location of datatype") - if(NULL == (loc->path = H5T_nameof((H5T_t *)obj))) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to get path of datatype") - break; + { + H5T_t *dt = NULL; + + /* Get the actual datatype object if the VOL object is set */ + if(NULL == (dt = (H5T_t *)H5T_get_named_type((const H5T_t *)obj))) + dt = (H5T_t *) obj; + + if(NULL == (loc->oloc = H5T_oloc(dt))) + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to get object location of datatype") + if(NULL == (loc->path = H5T_nameof(dt))) + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to get path of datatype") + break; + } case H5I_DATASET: if(NULL == (loc->oloc = H5D_oloc((H5D_t *)obj))) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to get object location of dataset") |