diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2003-08-08 18:57:10 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2003-08-08 18:57:10 (GMT) |
commit | 5155912a82993a7797b90a72fce39eee9e66a63e (patch) | |
tree | 8877b0df5d88c75f9131f62188a8469bcf82f92f /src | |
parent | d25aefd0f38c4447549caf8513a91e980818412d (diff) | |
download | hdf5-5155912a82993a7797b90a72fce39eee9e66a63e.zip hdf5-5155912a82993a7797b90a72fce39eee9e66a63e.tar.gz hdf5-5155912a82993a7797b90a72fce39eee9e66a63e.tar.bz2 |
[svn-r7303] Purpose:
Code cleanup
Description:
Chase new error API usage
Protect against the current ID getting deleted during iteration over an
ID group.
Platforms tested:
h5committested
Diffstat (limited to 'src')
-rw-r--r-- | src/H5I.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -549,7 +549,7 @@ H5I_destroy_group(H5I_type_t grp) */ if (1==grp_ptr->count) { H5I_clear_group(grp, TRUE); - H5E_clear(H5E_get_my_stack()); /*don't care about errors*/ + H5E_clear(NULL); /*don't care about errors*/ H5MM_xfree(grp_ptr->id_list); HDmemset (grp_ptr, 0, sizeof(*grp_ptr)); } else { @@ -1068,6 +1068,7 @@ H5I_search(H5I_type_t grp, H5I_search_func_t func, void *key) { H5I_id_group_t *grp_ptr = NULL; /*ptr to the group */ H5I_id_info_t *id_ptr = NULL; /*ptr to the new ID */ + H5I_id_info_t *next_id = NULL; /*ptr to the next ID */ unsigned i; /*counter */ void *ret_value = NULL; /*return value */ @@ -1084,9 +1085,10 @@ H5I_search(H5I_type_t grp, H5I_search_func_t func, void *key) for (i=0; i<grp_ptr->hash_size; i++) { id_ptr = grp_ptr->id_list[i]; while (id_ptr) { + next_id= id_ptr->next; /* Protect against ID being deleted in callback */ if ((*func)(id_ptr->obj_ptr, id_ptr->id, key)) HGOTO_DONE(id_ptr->obj_ptr); /*found the item*/ - id_ptr = id_ptr->next; + id_ptr = next_id; } } |