summaryrefslogtreecommitdiffstats
path: root/src/H5Gstab.c
diff options
context:
space:
mode:
authorNeil Fortner <nfortne2@hdfgroup.org>2010-09-21 17:52:12 (GMT)
committerNeil Fortner <nfortne2@hdfgroup.org>2010-09-21 17:52:12 (GMT)
commit2087c6a9e49daa4d160fdbd79230bb3b36e63c30 (patch)
treea3f6011efa1a9369fd33d1fffa09365edc696ac5 /src/H5Gstab.c
parent95bc60ceb48bf6cd508691dd94be071b190fa74a (diff)
downloadhdf5-2087c6a9e49daa4d160fdbd79230bb3b36e63c30.zip
hdf5-2087c6a9e49daa4d160fdbd79230bb3b36e63c30.tar.gz
hdf5-2087c6a9e49daa4d160fdbd79230bb3b36e63c30.tar.bz2
[svn-r19461] 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/H5Gstab.c')
-rw-r--r--src/H5Gstab.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/H5Gstab.c b/src/H5Gstab.c
index 0566725..7d0ad48 100644
--- a/src/H5Gstab.c
+++ b/src/H5Gstab.c
@@ -221,7 +221,8 @@ done:
*/
herr_t
H5G_stab_insert_real(H5F_t *f, H5O_stab_t *stab, const char *name,
- H5O_link_t *obj_lnk, hid_t dxpl_id)
+ H5O_link_t *obj_lnk, H5O_type_t obj_type, const void *crt_info,
+ hid_t dxpl_id)
{
H5HL_t *heap = NULL; /* Pointer to local heap */
H5G_bt_ins_t udata; /* Data to pass through B-tree */
@@ -243,6 +244,8 @@ H5G_stab_insert_real(H5F_t *f, H5O_stab_t *stab, const char *name,
udata.common.name = name;
udata.common.heap = heap;
udata.lnk = obj_lnk;
+ udata.obj_type = obj_type;
+ udata.crt_info = crt_info;
/* Insert into symbol table */
if(H5B_insert(f, dxpl_id, H5B_SNODE, stab->btree_addr, &udata) < 0)
@@ -273,7 +276,8 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5G_stab_insert(const H5O_loc_t *grp_oloc, const char *name, H5O_link_t *obj_lnk,
+H5G_stab_insert(const H5O_loc_t *grp_oloc, const char *name,
+ H5O_link_t *obj_lnk, H5O_type_t obj_type, const void *crt_info,
hid_t dxpl_id)
{
H5O_stab_t stab; /* Symbol table message */
@@ -290,7 +294,8 @@ H5G_stab_insert(const H5O_loc_t *grp_oloc, const char *name, H5O_link_t *obj_lnk
if(NULL == H5O_msg_read(grp_oloc, H5O_STAB_ID, &stab, dxpl_id))
HGOTO_ERROR(H5E_SYM, H5E_BADMESG, FAIL, "not a symbol table")
- if(H5G_stab_insert_real(grp_oloc->file, &stab, name, obj_lnk, dxpl_id) < 0)
+ if(H5G_stab_insert_real(grp_oloc->file, &stab, name, obj_lnk, obj_type,
+ crt_info, dxpl_id) < 0)
HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, H5_ITER_ERROR, "unable to insert the name")
done: