diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2018-04-18 03:55:45 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2018-04-18 03:55:45 (GMT) |
commit | bcab84db9f291920ed0fe321116405f73eaddfa5 (patch) | |
tree | 7262020d64a762c7f88209b9af7fd6a3c2471164 /src/H5CX.c | |
parent | 188539f65e5de800ab63e68093c8e453e8c451c4 (diff) | |
download | hdf5-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.c | 42 |
1 files changed, 10 insertions, 32 deletions
@@ -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() */ - |