summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDana Robinson <derobins@hdfgroup.org>2019-06-11 21:14:13 (GMT)
committerDana Robinson <derobins@hdfgroup.org>2019-06-11 21:14:13 (GMT)
commit0cf52525d5b45cc7cf6f89267da76b46ffa75f90 (patch)
treeecf3b5ab202b73ffdc4d638e572bbeecf3f4f52b
parent3fd4f270fd109db57f426928486bedc78c8137ae (diff)
downloadhdf5-0cf52525d5b45cc7cf6f89267da76b46ffa75f90.zip
hdf5-0cf52525d5b45cc7cf6f89267da76b46ffa75f90.tar.gz
hdf5-0cf52525d5b45cc7cf6f89267da76b46ffa75f90.tar.bz2
H5A__free() was renamed to H5A__shared_free() and now requires
attr->shared to not be NULL.
-rw-r--r--src/H5Adense.c5
-rw-r--r--src/H5Aint.c26
-rw-r--r--src/H5Apkg.h2
-rw-r--r--src/H5Oattr.c5
4 files changed, 20 insertions, 18 deletions
diff --git a/src/H5Adense.c b/src/H5Adense.c
index ceac7d9..bddfe31 100644
--- a/src/H5Adense.c
+++ b/src/H5Adense.c
@@ -327,8 +327,9 @@ H5A__dense_fnd_cb(const H5A_t *attr, hbool_t *took_ownership, void *_user_attr)
H5A_t *old_attr = *user_attr;
/* Free any dynamically allocated items */
- if(H5A__free(old_attr) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTRELEASE, FAIL, "can't release attribute info")
+ if(old_attr->shared)
+ if(H5A__shared_free(old_attr) < 0)
+ HGOTO_ERROR(H5E_ATTR, H5E_CANTRELEASE, FAIL, "can't release attribute info")
old_attr = H5FL_FREE(H5A_t, old_attr);
} /* end if */
diff --git a/src/H5Aint.c b/src/H5Aint.c
index 2240657..2126444 100644
--- a/src/H5Aint.c
+++ b/src/H5Aint.c
@@ -1092,29 +1092,29 @@ done:
/*-------------------------------------------------------------------------
- * Function: H5A__free
+ * Function: H5A__shared_free
*
- * Purpose: Frees all memory associated with an attribute, but does not
- * free the H5A_t structure (which should be done in H5T_close).
+ * Purpose: Cleans up the shared attribute data. This will free
+ * the attribute's shared structure as well.
+ *
+ * attr and attr->shared must not be NULL
*
* Return: SUCCEED/FAIL
*
- * Programmer: Quincey Koziol
- * Monday, November 15, 2004
+ * Programmer: Quincey Koziol
+ * Monday, November 15, 2004
*
*-------------------------------------------------------------------------
*/
herr_t
-H5A__free(H5A_t *attr)
+H5A__shared_free(H5A_t *attr)
{
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_PACKAGE
HDassert(attr);
-
- if(!attr->shared)
- HGOTO_DONE(SUCCEED)
+ HDassert(attr->shared);
/* Free dynamically allocated items.
* When possible, keep trying to shut things down (via HDONE_ERROR).
@@ -1139,9 +1139,8 @@ H5A__free(H5A_t *attr)
/* Destroy shared attribute struct */
attr->shared = H5FL_FREE(H5A_shared_t, attr->shared);
-done:
FUNC_LEAVE_NOAPI(ret_value)
-} /* end H5A__free() */
+} /* end H5A__shared_free() */
/*-------------------------------------------------------------------------
@@ -1205,8 +1204,9 @@ H5A__close(H5A_t *attr)
/* Reference count can be 0. It only happens when H5A__create fails. */
if(attr->shared->nrefs <= 1) {
/* Free dynamically allocated items */
- if(H5A__free(attr) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTRELEASE, FAIL, "can't release attribute info")
+ if(attr->shared)
+ if(H5A__shared_free(attr) < 0)
+ HGOTO_ERROR(H5E_ATTR, H5E_CANTRELEASE, FAIL, "can't release attribute info")
} /* end if */
else {
/* There are other references to the shared part of the attribute.
diff --git a/src/H5Apkg.h b/src/H5Apkg.h
index 91061cd..f3870c0 100644
--- a/src/H5Apkg.h
+++ b/src/H5Apkg.h
@@ -196,7 +196,7 @@ H5_DLL H5A_t *H5A__copy(H5A_t *new_attr, const H5A_t *old_attr);
H5_DLL hid_t H5A__get_type(H5A_t *attr);
H5_DLL herr_t H5A__get_info(const H5A_t *attr, H5A_info_t *ainfo);
H5_DLL hid_t H5A__get_create_plist(H5A_t* attr);
-H5_DLL herr_t H5A__free(H5A_t *attr);
+H5_DLL herr_t H5A__shared_free(H5A_t *attr);
H5_DLL herr_t H5A__close(H5A_t *attr);
H5_DLL herr_t H5A__close_cb(H5VL_object_t *attr_vol_obj);
H5_DLL htri_t H5A__get_ainfo(H5F_t *f, H5O_t *oh, H5O_ainfo_t *ainfo);
diff --git a/src/H5Oattr.c b/src/H5Oattr.c
index 653c23a..f685a00c 100644
--- a/src/H5Oattr.c
+++ b/src/H5Oattr.c
@@ -254,8 +254,9 @@ done:
if(NULL == ret_value)
if(attr) {
/* Free any dynamically allocated items */
- if(H5A__free(attr) < 0)
- HDONE_ERROR(H5E_ATTR, H5E_CANTRELEASE, NULL, "can't release attribute info")
+ if(attr->shared)
+ if(H5A__shared_free(attr) < 0)
+ HDONE_ERROR(H5E_ATTR, H5E_CANTRELEASE, NULL, "can't release attribute info")
attr = H5FL_FREE(H5A_t, attr);
} /* end if */