diff options
author | Neil Fortner <nfortne2@hdfgroup.org> | 2010-09-21 19:55:18 (GMT) |
---|---|---|
committer | Neil Fortner <nfortne2@hdfgroup.org> | 2010-09-21 19:55:18 (GMT) |
commit | 815c143300951a9723e041de9a5e21e3d28023de (patch) | |
tree | 55e97b7ba751412b6e9205f97881bff8fbddb2ea /src/H5Ostab.c | |
parent | b57d5f8ad2af18b7b72affc72a5612a594dbbccf (diff) | |
download | hdf5-815c143300951a9723e041de9a5e21e3d28023de.zip hdf5-815c143300951a9723e041de9a5e21e3d28023de.tar.gz hdf5-815c143300951a9723e041de9a5e21e3d28023de.tar.bz2 |
[svn-r19464] Purpose: Fix bug 1864
Description:
Library versions 1.6.3 and earlier contain a bug which causes them to be unable
to perform certain operations on a group if that group's symbol table
information is not cached in the parent group's symbol table. Versions 1.8.0
to 1.8.5 did not cache this information. Modified library to cache this
information.
Tested: jam, amani, heiwa (h5committest)
Diffstat (limited to 'src/H5Ostab.c')
-rw-r--r-- | src/H5Ostab.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/H5Ostab.c b/src/H5Ostab.c index abc4739..cc08300 100644 --- a/src/H5Ostab.c +++ b/src/H5Ostab.c @@ -44,7 +44,7 @@ static size_t H5O_stab_size(const H5F_t *f, hbool_t disable_shared, const void * static herr_t H5O_stab_free(void *_mesg); static herr_t H5O_stab_delete(H5F_t *f, hid_t dxpl_id, H5O_t *open_oh, void *_mesg); static void *H5O_stab_copy_file(H5F_t *file_src, void *native_src, - H5F_t *file_dst, hbool_t *recompute_size, H5O_copy_t *cpy_info, void *udata, + H5F_t *file_dst, hbool_t *recompute_size, H5O_copy_t *cpy_info, void *_udata, hid_t dxpl_id); static herr_t H5O_stab_post_copy_file(const H5O_loc_t *src_oloc, const void *mesg_src, H5O_loc_t *dst_oloc, void *mesg_dst, hid_t dxpl_id, H5O_copy_t *cpy_info); @@ -307,11 +307,12 @@ done: */ static void * H5O_stab_copy_file(H5F_t *file_src, void *native_src, H5F_t *file_dst, - hbool_t UNUSED *recompute_size, H5O_copy_t UNUSED *cpy_info, void UNUSED *udata, + hbool_t UNUSED *recompute_size, H5O_copy_t UNUSED *cpy_info, void *_udata, hid_t dxpl_id) { H5O_stab_t *stab_src = (H5O_stab_t *) native_src; H5O_stab_t *stab_dst = NULL; + H5G_copy_file_ud_t *udata = (H5G_copy_file_ud_t *)_udata; size_t size_hint; /* Local heap initial size */ void *ret_value; /* Return value */ @@ -333,6 +334,11 @@ H5O_stab_copy_file(H5F_t *file_src, void *native_src, H5F_t *file_dst, if(H5G_stab_create_components(file_dst, stab_dst, size_hint, dxpl_id) < 0) HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, NULL, "can't create symbol table components") + /* Cache stab in udata */ + udata->cache_type = H5G_CACHED_STAB; + udata->cache.stab.btree_addr = stab_dst->btree_addr; + udata->cache.stab.heap_addr = stab_dst->heap_addr; + /* Set return value */ ret_value = stab_dst; |