diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2005-08-10 20:28:32 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2005-08-10 20:28:32 (GMT) |
commit | 0e1b41d0fd1521784128e8637b5afa8371d2779d (patch) | |
tree | 8c17410110f52e6c5b77e49d41a8c1af00a8e3da /src/H5Gnode.c | |
parent | a8fbde5d18ea0b8e0567649571e527e9f04ab5c7 (diff) | |
download | hdf5-0e1b41d0fd1521784128e8637b5afa8371d2779d.zip hdf5-0e1b41d0fd1521784128e8637b5afa8371d2779d.tar.gz hdf5-0e1b41d0fd1521784128e8637b5afa8371d2779d.tar.bz2 |
[svn-r11229] Purpose:
Big fix
Description:
A group opened by dereferencing a object reference would not work for
H5Giterate(), due to the local heap & B-tree information not being cached.
Solution:
Get the local heap & B-tree info & point to that structure instead of
the group entry for the group.
Platforms tested:
FreeBSD 4.11 (sleipnir)
Too minor to require h5committest
Diffstat (limited to 'src/H5Gnode.c')
-rw-r--r-- | src/H5Gnode.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/H5Gnode.c b/src/H5Gnode.c index dfa607e..4c08b9c 100644 --- a/src/H5Gnode.c +++ b/src/H5Gnode.c @@ -1533,7 +1533,7 @@ H5G_node_iterate (H5F_t *f, hid_t dxpl_id, const void UNUSED *_lt_key, haddr_t a if (bt_udata->skip>0) { --bt_udata->skip; } else { - if (NULL == (heap = H5HL_protect(f, dxpl_id, bt_udata->ent->cache.stab.heap_addr))) + if (NULL == (heap = H5HL_protect(f, dxpl_id, bt_udata->stab->heap_addr))) HGOTO_ERROR(H5E_SYM, H5E_NOTFOUND, H5B_ITER_ERROR, "unable to protect symbol name"); name = H5HL_offset_into(f, heap, name_off[i]); @@ -1548,7 +1548,7 @@ H5G_node_iterate (H5F_t *f, hid_t dxpl_id, const void UNUSED *_lt_key, haddr_t a } HDstrcpy (s, name); - if (H5HL_unprotect(f, dxpl_id, heap, bt_udata->ent->cache.stab.heap_addr, H5AC__NO_FLAGS_SET) < 0) + if (H5HL_unprotect(f, dxpl_id, heap, bt_udata->stab->heap_addr, H5AC__NO_FLAGS_SET) < 0) HGOTO_ERROR(H5E_SYM, H5E_PROTECT, H5B_ITER_ERROR, "unable to unprotect symbol name"); heap=NULL; name=NULL; @@ -1565,7 +1565,7 @@ H5G_node_iterate (H5F_t *f, hid_t dxpl_id, const void UNUSED *_lt_key, haddr_t a HERROR (H5E_SYM, H5E_CANTNEXT, "iteration operator failed"); done: - if (heap && H5HL_unprotect(f, dxpl_id, heap, bt_udata->ent->cache.stab.heap_addr, H5AC__NO_FLAGS_SET) < 0) + if (heap && H5HL_unprotect(f, dxpl_id, heap, bt_udata->stab->heap_addr, H5AC__NO_FLAGS_SET) < 0) HDONE_ERROR(H5E_SYM, H5E_PROTECT, H5B_ITER_ERROR, "unable to unprotect symbol name"); if (sn && H5AC_unprotect(f, dxpl_id, H5AC_SNODE, addr, sn, H5AC__NO_FLAGS_SET) != SUCCEED) |