summaryrefslogtreecommitdiffstats
path: root/src/H5A.c
diff options
context:
space:
mode:
authorJerome Soumagne <jsoumagne@hdfgroup.org>2015-10-02 20:17:00 (GMT)
committerJerome Soumagne <jsoumagne@hdfgroup.org>2015-10-02 20:17:00 (GMT)
commitb991b71176e27f3d4ad0c9ddedfaadd9e232d831 (patch)
tree52a66b6069924048165a069042e8fadc85d7b840 /src/H5A.c
parentf0adeb1cdd05562a5ced3be6f3f33b70266bc7ba (diff)
downloadhdf5-b991b71176e27f3d4ad0c9ddedfaadd9e232d831.zip
hdf5-b991b71176e27f3d4ad0c9ddedfaadd9e232d831.tar.gz
hdf5-b991b71176e27f3d4ad0c9ddedfaadd9e232d831.tar.bz2
[svn-r27938] Fix private/public H5A_get_type and H5A_get_space
Diffstat (limited to 'src/H5A.c')
-rw-r--r--src/H5A.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/H5A.c b/src/H5A.c
index 440fc31..cc30319 100644
--- a/src/H5A.c
+++ b/src/H5A.c
@@ -684,6 +684,7 @@ hid_t
H5Aget_space(hid_t attr_id)
{
H5A_t *attr; /* Attribute object for ID */
+ H5S_t *ds = NULL;
hid_t ret_value;
FUNC_ENTER_API(FAIL)
@@ -693,10 +694,19 @@ H5Aget_space(hid_t attr_id)
if(NULL == (attr = (H5A_t *)H5I_object_verify(attr_id, H5I_ATTR)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an attribute")
- if((ret_value = H5A_get_space(attr)) < 0)
+ if(NULL == (ds = H5A_get_space(attr)))
HGOTO_ERROR(H5E_ARGS, H5E_CANTGET, FAIL, "can't get space ID of attribute")
+ /* Atomize */
+ if((ret_value = H5I_register(H5I_DATASPACE, ds, TRUE)) < 0)
+ HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to register dataspace atom")
+
done:
+ if(ret_value < 0) {
+ if(ds && (H5S_close(ds) < 0))
+ HDONE_ERROR(H5E_DATASET, H5E_CLOSEERROR, FAIL, "unable to release dataspace")
+ } /* end if */
+
FUNC_LEAVE_API(ret_value)
} /* H5Aget_space() */
@@ -721,6 +731,7 @@ hid_t
H5Aget_type(hid_t attr_id)
{
H5A_t *attr; /* Attribute object for ID */
+ H5T_t *dt = NULL;
hid_t ret_value; /* Return value */
FUNC_ENTER_API(FAIL)
@@ -730,10 +741,19 @@ H5Aget_type(hid_t attr_id)
if(NULL == (attr = (H5A_t *)H5I_object_verify(attr_id, H5I_ATTR)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an attribute")
- if((ret_value = H5A_get_type(attr)) < 0)
+ if(NULL == (dt = H5A_get_type(attr)))
HGOTO_ERROR(H5E_ARGS, H5E_CANTGET, FAIL, "can't get space ID of attribute")
+ /* Create an atom */
+ if((ret_value = H5I_register(H5I_DATATYPE, dt, TRUE)) < 0)
+ HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to register datatype")
+
done:
+ if(ret_value < 0) {
+ if(dt && (H5T_close(dt) < 0))
+ HDONE_ERROR(H5E_DATASET, H5E_CLOSEERROR, FAIL, "unable to release datatype")
+ } /* end if */
+
FUNC_LEAVE_API(ret_value)
} /* H5Aget_type() */