summaryrefslogtreecommitdiffstats
path: root/src/H5Gnode.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5Gnode.c')
-rw-r--r--src/H5Gnode.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/H5Gnode.c b/src/H5Gnode.c
index 1a2f922..126be95 100644
--- a/src/H5Gnode.c
+++ b/src/H5Gnode.c
@@ -1669,12 +1669,18 @@ H5G_node_type(H5F_t *f, hid_t dxpl_id, const void UNUSED *_lt_key, haddr_t addr,
/* Compute index of entry */
loc_idx = udata->idx - udata->num_objs;
- /* Build temporary object location */
- tmp_oloc.file = f;
- HDassert(H5F_addr_defined(sn->entry[loc_idx].header));
- tmp_oloc.addr = sn->entry[loc_idx].header;
+ /* Check for a soft link */
+ if(sn->entry[loc_idx].type == H5G_CACHED_SLINK)
+ udata->type = H5G_LINK;
+ /* Must be a hard link */
+ else {
+ /* Build temporary object location */
+ tmp_oloc.file = f;
+ HDassert(H5F_addr_defined(sn->entry[loc_idx].header));
+ tmp_oloc.addr = sn->entry[loc_idx].header;
- udata->type = H5O_obj_type(&tmp_oloc, dxpl_id);
+ udata->type = H5O_obj_type(&tmp_oloc, dxpl_id);
+ } /* end else */
ret_value = H5B_ITER_STOP;
} else {
udata->num_objs += sn->nsyms;
@@ -1687,6 +1693,7 @@ done:
FUNC_LEAVE_NOAPI(ret_value);
} /* end H5G_node_type() */
+#ifdef H5_GROUP_REVISION
/*-------------------------------------------------------------------------
* Function: H5G_node_stab_convert
@@ -1756,6 +1763,7 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5G_node_stab_convert() */
+#endif /* H5_GROUP_REVISION */
/*-------------------------------------------------------------------------