summaryrefslogtreecommitdiffstats
path: root/src/H5HF.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5HF.c')
-rw-r--r--src/H5HF.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/H5HF.c b/src/H5HF.c
index fcbb9cc..f30eb16 100644
--- a/src/H5HF.c
+++ b/src/H5HF.c
@@ -568,10 +568,20 @@ H5HF_close(H5HF_t *fh, hid_t dxpl_id)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't remove group from list of open objects")
/* Close the free space information */
+ /* (Can't put this in header "destroy" routine, because it has
+ * pointers to indirect blocks in the heap, which would create
+ * a reference loop and the objects couldn't be removed from
+ * the metadata cache - QAK)
+ */
if(H5HF_space_close(fh->hdr, dxpl_id) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't release free space info")
/* Reset the block iterator */
+ /* (Can't put this in header "destroy" routine, because it has
+ * pointers to indirect blocks in the heap, which would create
+ * a reference loop and the objects couldn't be removed from
+ * the metadata cache - QAK)
+ */
if(H5HF_man_iter_reset(&fh->hdr->next_block) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't reset block iterator")