diff options
author | Dana Robinson <derobins@hdfgroup.org> | 2020-09-08 21:59:33 (GMT) |
---|---|---|
committer | Dana Robinson <derobins@hdfgroup.org> | 2020-09-08 21:59:33 (GMT) |
commit | 09981b58d800d784a2aa7e3ea5f7f1cad576e8db (patch) | |
tree | c95c14078556f0f7630259c5824f6daf76f3520c /src | |
parent | f58c2c5cced54d0dbbd72c49bd5dd03c28865196 (diff) | |
download | hdf5-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.c | 20 | ||||
-rw-r--r-- | src/H5Fvfd_swmr.c | 2 |
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, |