diff options
Diffstat (limited to 'src/H5Gtraverse.c')
-rw-r--r-- | src/H5Gtraverse.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/H5Gtraverse.c b/src/H5Gtraverse.c index 0779c89..5b1f71c 100644 --- a/src/H5Gtraverse.c +++ b/src/H5Gtraverse.c @@ -946,11 +946,22 @@ H5G_traverse(const H5G_loc_t *loc, const char *name, unsigned target, H5G_traver if(H5P_get(lapl, H5L_ACS_NLINKS_NAME, &nlinks) < 0) HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get number of links") } /* end else */ + + /* Set up invalid tag. This is a precautionary step only. Setting an invalid + tag here will ensure that no metadata accessed while doing the traversal + is given an improper tag, unless another one is specifically set up + first. This will ensure we're not accidentally tagging something we + shouldn't be during the traversal. Note that for best tagging assertion + coverage, setting H5C_DO_TAGGING_SANITY_CHECKS is advised. */ + H5_BEGIN_TAG(dxpl_id, H5AC__INVALID_TAG, FAIL); /* Go perform "real" traversal */ if(H5G_traverse_real(loc, name, target, &nlinks, op, op_data, lapl_id, dxpl_id) < 0) HGOTO_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL, "internal path traversal failed") + /* Reset tag after traversal */ + H5_END_TAG(FAIL); + done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5G_traverse() */ |