diff options
-rw-r--r-- | src/H5F.c | 8 | ||||
-rw-r--r-- | src/H5Groot.c | 2 |
2 files changed, 6 insertions, 4 deletions
@@ -1001,14 +1001,16 @@ H5F_dest(H5F_t *f, hid_t dxpl_id) /* Push error, but keep going*/ HDONE_ERROR(H5E_FILE, H5E_CANTRELEASE, FAIL, "can't release file free space info") } /* end if */ + } /* end if */ - /* Unpin the superblock, since we're about to destroy the cache */ + /* Unpin the superblock, since we're about to destroy the cache */ + if(f->shared->sblock) { if(H5AC_unpin_entry(f->shared->sblock) < 0) /* Push error, but keep going*/ HDONE_ERROR(H5E_FSPACE, H5E_CANTUNPIN, FAIL, "unable to unpin superblock") f->shared->sblock = NULL; - } /* end if */ - + } + /* Remove shared file struct from list of open files */ if(H5F_sfile_remove(f->shared) < 0) /* Push error, but keep going*/ diff --git a/src/H5Groot.c b/src/H5Groot.c index e4cdc46..04f0e1a 100644 --- a/src/H5Groot.c +++ b/src/H5Groot.c @@ -250,13 +250,13 @@ done: * allocated */ if(ret_value < 0) { if(f->shared->root_grp) { + H5G_name_free(root_loc.path); if(f->shared->root_grp->shared) f->shared->root_grp->shared = H5FL_FREE(H5G_shared_t, f->shared->root_grp->shared); f->shared->root_grp = H5FL_FREE(H5G_t, f->shared->root_grp); } /* end if */ if(f->shared->sblock) f->shared->sblock->root_ent = (H5G_entry_t *)H5MM_xfree(f->shared->sblock->root_ent); - H5G_name_free(root_loc.path); } /* end if */ /* Mark superblock dirty in cache, if necessary */ |