summaryrefslogtreecommitdiffstats
path: root/src/H5SM.c
diff options
context:
space:
mode:
authorDana Robinson <derobins@hdfgroup.org>2015-10-16 02:19:11 (GMT)
committerDana Robinson <derobins@hdfgroup.org>2015-10-16 02:19:11 (GMT)
commit84d6d40b57ac26b73ecde3ed3ee2dad26855b9eb (patch)
tree5680e556dbb0971024bcea8911beb7efebc184c1 /src/H5SM.c
parent31683703d9bf394cef27805c50fc89efa29361b9 (diff)
downloadhdf5-84d6d40b57ac26b73ecde3ed3ee2dad26855b9eb.zip
hdf5-84d6d40b57ac26b73ecde3ed3ee2dad26855b9eb.tar.gz
hdf5-84d6d40b57ac26b73ecde3ed3ee2dad26855b9eb.tar.bz2
[svn-r28093] Merge of r27768 and r27774 from trunk
Description: Complete revamp of package initialization/shutdown mechanism in the library. Each package now has a single init/term routine. This new way should avoid packages being re-initialized during library shutdown and is also be _much_ more proactive about giving feedback for resource leaks internal to the library. Introduces a new "module" header file for packages in the library (e.g src/H5Fmodule.h) which sets up some necessary package configuration macros for the FUNC_ENTER/LEAVE macros. (The VFL drivers have their own slightly modified version of this header, src/H5FDdrvr_module.h) Also cleaned up a bunch of resources leaks all across the library and tests, along with addressing many warnings, as I encountered them. Tested on: Ubuntu 15.04 (Linux 3.19 x86_64) gcc 4.9.2 serial and parallel (MPICH 3.1.4)
Diffstat (limited to 'src/H5SM.c')
-rw-r--r--src/H5SM.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/H5SM.c b/src/H5SM.c
index 52133c9..4c83479 100644
--- a/src/H5SM.c
+++ b/src/H5SM.c
@@ -17,8 +17,9 @@
/* Module Setup */
/****************/
-#define H5O_PACKAGE /*suppress error about including H5Opkg */
-#define H5SM_PACKAGE /*suppress error about including H5SMpkg */
+#define H5O_FRIEND /*suppress error about including H5Opkg */
+#include "H5SMmodule.h" /* This source code file is part of the H5SM module */
+
/***********/
/* Headers */
@@ -84,6 +85,9 @@ static herr_t H5SM_read_mesg(H5F_t *f, const H5SM_sohm_t *mesg, H5HF_t *fheap,
/* Package Variables */
/*********************/
+/* Package initialization variable */
+hbool_t H5_PKG_INIT_VAR = FALSE;
+
H5FL_DEFINE(H5SM_master_table_t);
H5FL_ARR_DEFINE(H5SM_index_header_t, H5O_SHMESG_MAX_NINDEXES);
H5FL_DEFINE(H5SM_list_t);
@@ -642,7 +646,7 @@ H5SM_create_list(H5F_t *f, H5SM_index_header_t *header, hid_t dxpl_id)
hsize_t x; /* Counter variable */
size_t num_entries; /* Number of messages to create in list */
haddr_t addr = HADDR_UNDEF; /* Address of the list on disk */
- haddr_t ret_value;
+ haddr_t ret_value = HADDR_UNDEF; /* Return value */
FUNC_ENTER_NOAPI_NOINIT_TAG(dxpl_id, H5AC__SOHM_TAG, HADDR_UNDEF)
@@ -885,7 +889,7 @@ done:
static htri_t
H5SM_can_share_common(const H5F_t *f, unsigned type_id, const void *mesg)
{
- htri_t ret_value; /* Return value */
+ htri_t ret_value = FAIL; /* Return value */
FUNC_ENTER_NOAPI_NOINIT
@@ -1262,7 +1266,7 @@ H5SM_write_mesg(H5F_t *f, hid_t dxpl_id, H5O_t *open_oh,
/* Encode the message to be written */
if((buf_size = H5O_msg_raw_size(f, type_id, TRUE, mesg)) == 0)
HGOTO_ERROR(H5E_SOHM, H5E_BADSIZE, FAIL, "can't find message size")
- if(NULL == (encoding_buf = H5MM_malloc(buf_size)))
+ if(NULL == (encoding_buf = H5MM_calloc(buf_size)))
HGOTO_ERROR(H5E_SOHM, H5E_NOSPACE, FAIL, "can't allocate buffer for encoding")
if(H5O_msg_encode(f, type_id, TRUE, (unsigned char *)encoding_buf, mesg) < 0)
HGOTO_ERROR(H5E_SOHM, H5E_CANTENCODE, FAIL, "can't encode message to be shared")
@@ -1617,8 +1621,8 @@ done:
static size_t
H5SM_find_in_list(const H5SM_list_t *list, const H5SM_mesg_key_t *key, size_t *empty_pos)
{
- size_t x;
- size_t ret_value;
+ size_t x;
+ size_t ret_value = 0; /* Return value */
FUNC_ENTER_NOAPI_NOINIT_NOERR