summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2010-04-02 02:32:13 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2010-04-02 02:32:13 (GMT)
commit18264bf51c2e297efe6fedaf193e54802bc49904 (patch)
treeaf51c1332efb60dbdc399917fa74f1e3be6f77bf
parent3a3e9753e61f467f27ac32d15d782faee4b85870 (diff)
downloadhdf5-18264bf51c2e297efe6fedaf193e54802bc49904.zip
hdf5-18264bf51c2e297efe6fedaf193e54802bc49904.tar.gz
hdf5-18264bf51c2e297efe6fedaf193e54802bc49904.tar.bz2
[svn-r18496] Description:
Extract data structure 'destroy' routines from metadata cache client 'destroy' callbacks. Tested on: Mac OS X/32 10.6.3 (amazon) w/debug (h5committest not required on this branch)
-rw-r--r--src/H5Gnode.c24
-rw-r--r--src/H5HFcache.c38
-rw-r--r--src/H5HFdblock.c3
-rw-r--r--src/H5HFhdr.c21
-rw-r--r--src/H5HFiblock.c5
5 files changed, 58 insertions, 33 deletions
diff --git a/src/H5Gnode.c b/src/H5Gnode.c
index 210f08e..1b47959 100644
--- a/src/H5Gnode.c
+++ b/src/H5Gnode.c
@@ -297,7 +297,7 @@ H5G_node_size_real(const H5F_t *f)
/*-------------------------------------------------------------------------
- * Function: H5G_node_dest
+ * Function: H5G_node_free
*
* Purpose: Destroy a symbol table node in memory.
*
@@ -310,9 +310,9 @@ H5G_node_size_real(const H5F_t *f)
*-------------------------------------------------------------------------
*/
static herr_t
-H5G_node_dest(H5G_node_t *sym)
+H5G_node_free(H5G_node_t *sym)
{
- FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5G_node_dest)
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5G_node_free)
/*
* Check arguments.
@@ -324,10 +324,10 @@ H5G_node_dest(H5G_node_t *sym)
if(sym->entry)
sym->entry = H5FL_SEQ_FREE(H5G_entry_t, sym->entry);
- H5FL_FREE(H5G_node_t,sym);
+ sym = H5FL_FREE(H5G_node_t, sym);
FUNC_LEAVE_NOAPI(SUCCEED)
-} /* end H5G_node_dest() */
+} /* end H5G_node_free() */
/*-------------------------------------------------------------------------
@@ -395,7 +395,7 @@ H5G_node_deserialize(haddr_t UNUSED addr, size_t UNUSED len, const void *image,
done:
if(!ret_value)
- if(sym && H5G_node_dest(sym) < 0)
+ if(sym && H5G_node_free(sym) < 0)
HDONE_ERROR(H5E_SYM, H5E_CANTFREE, NULL, "unable to destroy symbol table node")
FUNC_LEAVE_NOAPI(ret_value)
@@ -486,15 +486,19 @@ done:
static herr_t
H5G_node_free_icr(haddr_t UNUSED addr, size_t UNUSED len, void *thing)
{
- FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5G_node_free_icr)
+ herr_t ret_value = SUCCEED; /* Return value */
+
+ FUNC_ENTER_NOAPI_NOINIT(H5G_node_free_icr)
/* Check arguments */
HDassert(thing);
- /* Destroy B-tree node */
- H5G_node_dest(thing);
+ /* Destroy symbol table node */
+ if(H5G_node_free(thing) < 0)
+ HGOTO_ERROR(H5E_SYM, H5E_CANTFREE, FAIL, "unable to destroy symbol table node")
- FUNC_LEAVE_NOAPI(SUCCEED)
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5G_node_free_icr() */
diff --git a/src/H5HFcache.c b/src/H5HFcache.c
index ffc1e92..990c44c 100644
--- a/src/H5HFcache.c
+++ b/src/H5HFcache.c
@@ -413,7 +413,8 @@ H5HF_cache_hdr_deserialize(haddr_t addr, size_t UNUSED len,
done:
/* Release resources */
if(!ret_value && hdr)
- (void)H5HF_hdr_dest(hdr);
+ if(H5HF_hdr_dest(hdr) < 0)
+ HDONE_ERROR(H5E_HEAP, H5E_CANTFREE, NULL, "unable to destroy fractal heap header")
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF_cache_hdr_deserialize() */ /*lint !e818 Can't make udata a pointer to const */
@@ -592,15 +593,19 @@ done:
static herr_t
H5HF_cache_hdr_free_icr(haddr_t UNUSED addr, size_t UNUSED len, void *thing)
{
- FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5HF_cache_hdr_free_icr)
+ herr_t ret_value = SUCCEED; /* Return value */
+
+ FUNC_ENTER_NOAPI_NOINIT(H5HF_cache_hdr_free_icr)
/* Check arguments */
HDassert(thing);
- /* Destroy B-tree node */
- H5HF_hdr_dest(thing);
+ /* Destroy fractal heap header */
+ if(H5HF_hdr_dest(thing) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTFREE, FAIL, "unable to destroy fractal heap header")
- FUNC_LEAVE_NOAPI(SUCCEED)
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF_cache_hdr_free_icr() */
@@ -786,7 +791,8 @@ H5HF_cache_iblock_deserialize(haddr_t UNUSED addr, size_t UNUSED len,
done:
/* Release resources */
if(!ret_value && iblock)
- (void)H5HF_man_iblock_dest(iblock);
+ if(H5HF_man_iblock_dest(iblock) < 0)
+ HDONE_ERROR(H5E_HEAP, H5E_CANTFREE, NULL, "unable to destroy fractal heap indirect block")
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF_cache_iblock_deserialize() */
@@ -929,15 +935,19 @@ done:
static herr_t
H5HF_cache_iblock_free_icr(haddr_t UNUSED addr, size_t UNUSED len, void *thing)
{
- FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5HF_cache_iblock_free_icr)
+ herr_t ret_value = SUCCEED; /* Return value */
+
+ FUNC_ENTER_NOAPI_NOINIT(H5HF_cache_iblock_free_icr)
/* Check arguments */
HDassert(thing);
/* Destroy fractal heap indirect block */
- H5HF_man_iblock_dest(thing);
+ if(H5HF_man_iblock_dest(thing) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTFREE, FAIL, "unable to destroy fractal heap indirect block")
- FUNC_LEAVE_NOAPI(SUCCEED)
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
} /* H5HF_cache_iblock_free_icr() */
@@ -1391,7 +1401,9 @@ done:
herr_t
H5HF_cache_dblock_free_icr(haddr_t UNUSED addr, size_t UNUSED len, void *thing)
{
- FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5HF_cache_dblock_free_icr)
+ herr_t ret_value = SUCCEED; /* Return value */
+
+ FUNC_ENTER_NOAPI_NOINIT(H5HF_cache_dblock_free_icr)
/*
* Check arguments.
@@ -1399,8 +1411,10 @@ H5HF_cache_dblock_free_icr(haddr_t UNUSED addr, size_t UNUSED len, void *thing)
HDassert(thing);
/* Destroy fractal heap direct block */
- H5HF_man_dblock_dest(thing);
+ if(H5HF_man_dblock_dest(thing) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTFREE, FAIL, "unable to destroy fractal heap direct block")
- FUNC_LEAVE_NOAPI(SUCCEED)
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF_cache_dblock_free_icr() */
diff --git a/src/H5HFdblock.c b/src/H5HFdblock.c
index 99f4aba..a751231 100644
--- a/src/H5HFdblock.c
+++ b/src/H5HFdblock.c
@@ -677,7 +677,6 @@ H5HF_man_dblock_dest(H5HF_direct_t *dblock)
HDassert(dblock->hdr != NULL);
if(H5HF_hdr_decr(dblock->hdr) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTDEC, FAIL, "can't decrement reference count on shared heap header")
-
if(dblock->parent)
if(H5HF_iblock_decr(dblock->parent) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTDEC, FAIL, "can't decrement reference count on shared indirect block")
@@ -686,7 +685,7 @@ H5HF_man_dblock_dest(H5HF_direct_t *dblock)
dblock->blk = H5FL_BLK_FREE(direct_block, dblock->blk);
/* Free fractal heap direct block info */
- H5FL_FREE(H5HF_direct_t, dblock);
+ dblock = H5FL_FREE(H5HF_direct_t, dblock);
done:
FUNC_LEAVE_NOAPI(ret_value)
diff --git a/src/H5HFhdr.c b/src/H5HFhdr.c
index f2127a1..0929235 100644
--- a/src/H5HFhdr.c
+++ b/src/H5HFhdr.c
@@ -131,7 +131,8 @@ H5HF_hdr_alloc(H5F_t *f)
done:
if(!ret_value)
if(hdr)
- (void)H5HF_hdr_dest(hdr);
+ if(H5HF_hdr_dest(hdr) < 0)
+ HDONE_ERROR(H5E_HEAP, H5E_CANTFREE, NULL, "unable to destroy fractal heap header")
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF_hdr_alloc() */
@@ -498,7 +499,8 @@ H5HF_hdr_create(H5F_t *f, hid_t dxpl_id, const H5HF_create_t *cparam)
done:
if(!H5F_addr_defined(ret_value))
if(hdr)
- (void)H5HF_hdr_dest(hdr);
+ if(H5HF_hdr_dest(hdr) < 0)
+ HDONE_ERROR(H5E_HEAP, H5E_CANTFREE, HADDR_UNDEF, "unable to destroy fractal heap header")
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF_hdr_create() */
@@ -1443,7 +1445,9 @@ done:
herr_t
H5HF_hdr_dest(H5HF_hdr_t *hdr)
{
- FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5HF_hdr_dest)
+ herr_t ret_value = SUCCEED; /* Return value */
+
+ FUNC_ENTER_NOAPI_NOINIT(H5HF_hdr_dest)
/*
* Check arguments.
@@ -1452,15 +1456,18 @@ H5HF_hdr_dest(H5HF_hdr_t *hdr)
HDassert(hdr->rc == 0);
/* Free the block size lookup table for the doubling table */
- H5HF_dtable_dest(&hdr->man_dtable);
+ if(H5HF_dtable_dest(&hdr->man_dtable) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTFREE, FAIL, "unable to destroy fractal heap doubling table")
/* Release any I/O pipeline filter information */
if(hdr->pline.nused)
- H5O_msg_reset(H5O_PLINE_ID, &(hdr->pline));
+ if(H5O_msg_reset(H5O_PLINE_ID, &(hdr->pline)) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTFREE, FAIL, "unable to reset I/O pipeline message")
/* Free the shared info itself */
- H5FL_FREE(H5HF_hdr_t, hdr);
+ hdr = H5FL_FREE(H5HF_hdr_t, hdr);
- FUNC_LEAVE_NOAPI(SUCCEED)
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF_hdr_dest() */
diff --git a/src/H5HFiblock.c b/src/H5HFiblock.c
index 1b4345e..a78e6de 100644
--- a/src/H5HFiblock.c
+++ b/src/H5HFiblock.c
@@ -1039,7 +1039,8 @@ H5HF_man_iblock_create(H5HF_hdr_t *hdr, hid_t dxpl_id, H5HF_indirect_t *par_iblo
done:
if(ret_value < 0)
if(iblock)
- (void)H5HF_man_iblock_dest(iblock);
+ if(H5HF_man_iblock_dest(iblock) < 0)
+ HDONE_ERROR(H5E_HEAP, H5E_CANTFREE, FAIL, "unable to destroy fractal heap indirect block")
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF_man_iblock_create() */
@@ -1602,7 +1603,7 @@ H5HF_man_iblock_dest(H5HF_indirect_t *iblock)
H5FL_SEQ_FREE(H5HF_indirect_ptr_t, iblock->child_iblocks);
/* Free fractal heap indirect block info */
- H5FL_FREE(H5HF_indirect_t, iblock);
+ iblock = H5FL_FREE(H5HF_indirect_t, iblock);
done:
FUNC_LEAVE_NOAPI(ret_value)