diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2010-04-02 02:32:13 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2010-04-02 02:32:13 (GMT) |
commit | 18264bf51c2e297efe6fedaf193e54802bc49904 (patch) | |
tree | af51c1332efb60dbdc399917fa74f1e3be6f77bf | |
parent | 3a3e9753e61f467f27ac32d15d782faee4b85870 (diff) | |
download | hdf5-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.c | 24 | ||||
-rw-r--r-- | src/H5HFcache.c | 38 | ||||
-rw-r--r-- | src/H5HFdblock.c | 3 | ||||
-rw-r--r-- | src/H5HFhdr.c | 21 | ||||
-rw-r--r-- | src/H5HFiblock.c | 5 |
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) |