summaryrefslogtreecommitdiffstats
path: root/src/H5CX.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2018-04-18 03:55:45 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2018-04-18 03:55:45 (GMT)
commitbcab84db9f291920ed0fe321116405f73eaddfa5 (patch)
tree7262020d64a762c7f88209b9af7fd6a3c2471164 /src/H5CX.c
parent188539f65e5de800ab63e68093c8e453e8c451c4 (diff)
downloadhdf5-bcab84db9f291920ed0fe321116405f73eaddfa5.zip
hdf5-bcab84db9f291920ed0fe321116405f73eaddfa5.tar.gz
hdf5-bcab84db9f291920ed0fe321116405f73eaddfa5.tar.bz2
Resolve memory leak of last API context, by freeing it in H5CX terminate
routine.
Diffstat (limited to 'src/H5CX.c')
-rw-r--r--src/H5CX.c42
1 files changed, 10 insertions, 32 deletions
diff --git a/src/H5CX.c b/src/H5CX.c
index af2619b..c81a0f4 100644
--- a/src/H5CX.c
+++ b/src/H5CX.c
@@ -535,6 +535,16 @@ H5CX_term_package(void)
FUNC_ENTER_NOAPI_NOINIT_NOERR
if(H5_PKG_INIT_VAR) {
+ H5CX_node_t *cnode; /* Context node */
+
+ /* Pop the top context node from the stack */
+ /* (Can't check for errors, as rest of library is shut down) */
+ cnode = H5CX__pop_common();
+
+ /* Free the context node */
+ /* (Allocated with HDmalloc() in H5CX_push_special() ) */
+ HDfree(cnode);
+
#ifndef H5_HAVE_THREADSAFE
/* Release pointer to head of API context stack */
HDfree(H5CX_head_g);
@@ -2810,35 +2820,3 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5CX_pop() */
-
-/*-------------------------------------------------------------------------
- * Function: H5CX_pop_special
- *
- * Purpose: Pops the context for an API call, without using library routines.
- *
- * Note: This should only be called in special circumstances, like H5close.
- *
- * Return: <none>
- *
- * Programmer: Quincey Koziol
- * Februrary 22, 2018
- *
- *-------------------------------------------------------------------------
- */
-void
-H5CX_pop_special(void)
-{
- H5CX_node_t *cnode; /* Context node */
-
- FUNC_ENTER_NOAPI_NOINIT_NOERR
-
- /* Perform common operations and get top context from stack */
- cnode = H5CX__pop_common();
- HDassert(cnode);
-
- /* Free the context node */
- HDfree(cnode);
-
- FUNC_LEAVE_NOAPI_VOID
-} /* end H5CX_pop_special() */
-