diff options
author | Raymond Lu <songyulu@hdfgroup.org> | 2013-04-29 19:23:04 (GMT) |
---|---|---|
committer | Raymond Lu <songyulu@hdfgroup.org> | 2013-04-29 19:23:04 (GMT) |
commit | bada3f7a86cb30b24fad3a24f88114861527ed58 (patch) | |
tree | 3f351f78649e966c2521c606082ad63e860e81c1 /src/H5G.c | |
parent | 029e143471397de6ddc204be0c21f0c04ee5f2e2 (diff) | |
download | hdf5-bada3f7a86cb30b24fad3a24f88114861527ed58.zip hdf5-bada3f7a86cb30b24fad3a24f88114861527ed58.tar.gz hdf5-bada3f7a86cb30b24fad3a24f88114861527ed58.tar.bz2 |
[svn-r23656] Issue 8380 H5Zunregister caused seg fault: I added some protection measures:
1. If any opened object uses the filter, let it fail.
2. Flush all opened files to push any cached data to files.
Tested with h5committest.
Diffstat (limited to 'src/H5G.c')
-rw-r--r-- | src/H5G.c | 46 |
1 files changed, 42 insertions, 4 deletions
@@ -499,7 +499,7 @@ H5Gget_create_plist(hid_t group_id) htri_t ginfo_exists; htri_t linfo_exists; htri_t pline_exists; - H5G_t *grp = NULL; + H5G_t *group = NULL; H5P_genplist_t *gcpl_plist; H5P_genplist_t *new_plist; hid_t new_gcpl_id = FAIL; @@ -509,9 +509,47 @@ H5Gget_create_plist(hid_t group_id) H5TRACE1("i", "i", group_id); /* Check args */ - if(NULL == (grp = (H5G_t *)H5I_object_verify(group_id, H5I_GROUP))) + if(NULL == (group = (H5G_t *)H5I_object_verify(group_id, H5I_GROUP))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a group") + if((ret_value = H5G_get_create_plist(group)) < 0) + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a group") + +done: + FUNC_LEAVE_API(ret_value) +} /* end H5Gget_create_plist() */ + + +/*------------------------------------------------------------------------- + * Function: H5G_get_create_plist + * + * Purpose: Private function for H5Gget_create_plist + * + * Return: Success: ID for a copy of the group creation + * property list. The property list ID should be + * released by calling H5Pclose(). + * + * Failure: FAIL + * + * Programmer: Quincey Koziol + * Tuesday, October 25, 2005 + * + *------------------------------------------------------------------------- + */ +hid_t +H5G_get_create_plist(H5G_t *grp) +{ + H5O_linfo_t linfo; /* Link info message */ + htri_t ginfo_exists; + htri_t linfo_exists; + htri_t pline_exists; + H5P_genplist_t *gcpl_plist; + H5P_genplist_t *new_plist; + hid_t new_gcpl_id = FAIL; + hid_t ret_value = FAIL; + + FUNC_ENTER_NOAPI(FAIL) + /* Copy the default group creation property list */ if(NULL == (gcpl_plist = (H5P_genplist_t *)H5I_object(H5P_LST_GROUP_CREATE_g))) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "can't get default group creation property list") @@ -573,8 +611,8 @@ done: HDONE_ERROR(H5E_SYM, H5E_CANTDEC, FAIL, "can't free") } /* end if */ - FUNC_LEAVE_API(ret_value) -} /* end H5Gget_create_plist() */ + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5G_get_create_plist() */ /*------------------------------------------------------------------------- |