summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDana Robinson <derobins@hdfgroup.org>2020-09-08 21:59:33 (GMT)
committerDana Robinson <derobins@hdfgroup.org>2020-09-08 21:59:33 (GMT)
commit09981b58d800d784a2aa7e3ea5f7f1cad576e8db (patch)
treec95c14078556f0f7630259c5824f6daf76f3520c /src
parentf58c2c5cced54d0dbbd72c49bd5dd03c28865196 (diff)
downloadhdf5-09981b58d800d784a2aa7e3ea5f7f1cad576e8db.zip
hdf5-09981b58d800d784a2aa7e3ea5f7f1cad576e8db.tar.gz
hdf5-09981b58d800d784a2aa7e3ea5f7f1cad576e8db.tar.bz2
Fixes a leak of the metadata index memory
Diffstat (limited to 'src')
-rw-r--r--src/H5Fint.c20
-rw-r--r--src/H5Fvfd_swmr.c2
2 files changed, 15 insertions, 7 deletions
diff --git a/src/H5Fint.c b/src/H5Fint.c
index 0531223..e3040d4 100644
--- a/src/H5Fint.c
+++ b/src/H5Fint.c
@@ -1425,15 +1425,23 @@ H5F__dest(H5F_t *f, hbool_t flush)
/* Push error, but keep going*/
HDONE_ERROR(H5E_FILE, H5E_CANTCLOSEFILE, FAIL, "unable to close file")
- /* A VFD SWMR reader may still have a metadata index at this stage.
- * If so, free it.
+ /* A VFD SWMR reader may still have metadata indexes at this stage.
+ * If so, free them.
*/
- if (f->shared->vfd_swmr && f->shared->mdf_idx != NULL) {
- HDfree(f->shared->mdf_idx);
- f->shared->mdf_idx = NULL;
- f->shared->mdf_idx_len = 0;
+ if (f->shared->vfd_swmr) {
+ if (f->shared->mdf_idx != NULL) {
+ H5MM_xfree(f->shared->mdf_idx);
+ f->shared->mdf_idx = NULL;
+ f->shared->mdf_idx_len = 0;
+ }
+ if (f->shared->old_mdf_idx != NULL) {
+ H5MM_xfree(f->shared->old_mdf_idx);
+ f->shared->old_mdf_idx = NULL;
+ f->shared->old_mdf_idx_len = 0;
+ }
}
+
/* Free mount table */
f->shared->mtab.child = (H5F_mount_t *)H5MM_xfree(f->shared->mtab.child);
f->shared->mtab.nalloc = 0;
diff --git a/src/H5Fvfd_swmr.c b/src/H5Fvfd_swmr.c
index dbe04ec..555619d 100644
--- a/src/H5Fvfd_swmr.c
+++ b/src/H5Fvfd_swmr.c
@@ -1923,7 +1923,7 @@ H5F__vfd_swmr_create_index(H5F_shared_t *shared)
HDassert(entries_in_index > 0);
- index = HDcalloc(entries_in_index, sizeof(index[0]));
+ index = H5MM_calloc(entries_in_index * sizeof(index[0]));
if (index == NULL) {
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL,