diff options
author | Jerome Soumagne <jsoumagne@hdfgroup.org> | 2015-10-02 20:17:00 (GMT) |
---|---|---|
committer | Jerome Soumagne <jsoumagne@hdfgroup.org> | 2015-10-02 20:17:00 (GMT) |
commit | b991b71176e27f3d4ad0c9ddedfaadd9e232d831 (patch) | |
tree | 52a66b6069924048165a069042e8fadc85d7b840 /src/H5A.c | |
parent | f0adeb1cdd05562a5ced3be6f3f33b70266bc7ba (diff) | |
download | hdf5-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.c | 24 |
1 files changed, 22 insertions, 2 deletions
@@ -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() */ |