summaryrefslogtreecommitdiffstats
path: root/src/H5HLint.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5HLint.c')
-rw-r--r--src/H5HLint.c120
1 files changed, 60 insertions, 60 deletions
diff --git a/src/H5HLint.c b/src/H5HLint.c
index e625f3d..42d6744 100644
--- a/src/H5HLint.c
+++ b/src/H5HLint.c
@@ -6,7 +6,7 @@
* This file is part of HDF5. The full HDF5 copyright notice, including *
* terms governing use, modification, and redistribution, is contained in *
* the COPYING file, which can be found at the root of the source code *
- * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
* If you do not have access to either file, you may request a copy from *
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -15,7 +15,7 @@
*
* Created: H5HLint.c
* Oct 12 2008
- * Quincey Koziol <koziol@hdfgroup.org>
+ * Quincey Koziol
*
* Purpose: Local heap internal routines.
*
@@ -26,48 +26,40 @@
/* Module Setup */
/****************/
-#include "H5HLmodule.h" /* This source code file is part of the H5HL module */
-
+#include "H5HLmodule.h" /* This source code file is part of the H5HL module */
/***********/
/* Headers */
/***********/
-#include "H5private.h" /* Generic Functions */
-#include "H5Eprivate.h" /* Error handling */
-#include "H5FLprivate.h" /* Free lists */
-#include "H5HLpkg.h" /* Local Heaps */
-
+#include "H5private.h" /* Generic Functions */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5FLprivate.h" /* Free lists */
+#include "H5HLpkg.h" /* Local Heaps */
/****************/
/* Local Macros */
/****************/
-
/******************/
/* Local Typedefs */
/******************/
-
/********************/
/* Package Typedefs */
/********************/
-
/********************/
/* Local Prototypes */
/********************/
-
/*********************/
/* Package Variables */
/*********************/
-
/*****************************/
/* Library Private Variables */
/*****************************/
-
/*******************/
/* Local Variables */
/*******************/
@@ -75,8 +67,6 @@
/* Declare a free list to manage the H5HL_t struct */
H5FL_DEFINE_STATIC(H5HL_t);
-
-
/*-------------------------------------------------------------------------
* Function: H5HL__new
*
@@ -90,11 +80,13 @@ H5FL_DEFINE_STATIC(H5HL_t);
*
*-------------------------------------------------------------------------
*/
-BEGIN_FUNC(PKG, ERR,
-H5HL_t *, NULL, NULL,
-H5HL__new(size_t sizeof_size, size_t sizeof_addr, size_t prfx_size))
+H5HL_t *
+H5HL__new(size_t sizeof_size, size_t sizeof_addr, size_t prfx_size)
+{
+ H5HL_t *heap = NULL; /* New local heap */
+ H5HL_t *ret_value = NULL;
- H5HL_t *heap = NULL; /* New local heap */
+ FUNC_ENTER_PACKAGE
/* check arguments */
HDassert(sizeof_size > 0);
@@ -102,25 +94,25 @@ H5HL__new(size_t sizeof_size, size_t sizeof_addr, size_t prfx_size))
HDassert(prfx_size > 0);
/* Allocate new local heap structure */
- if(NULL == (heap = H5FL_CALLOC(H5HL_t)))
- H5E_THROW(H5E_CANTALLOC, "memory allocation failed");
+ if (NULL == (heap = H5FL_CALLOC(H5HL_t)))
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTALLOC, NULL, "memory allocation failed")
/* Initialize non-zero fields */
heap->sizeof_size = sizeof_size;
heap->sizeof_addr = sizeof_addr;
- heap->prfx_size = prfx_size;
+ heap->prfx_size = prfx_size;
/* Set the return value */
ret_value = heap;
-CATCH
- if(!ret_value && heap != NULL)
+done:
+ if (!ret_value && heap != NULL)
if (NULL == (heap = H5FL_FREE(H5HL_t, heap)))
- H5E_THROW(H5E_CANTFREE, "can't free heap memory");
+ HDONE_ERROR(H5E_HEAP, H5E_CANTFREE, NULL, "can't free heap memory")
-END_FUNC(PKG) /* end H5HL__new() */
+ FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5HL__new() */
-
/*-------------------------------------------------------------------------
* Function: H5HL__inc_rc
*
@@ -133,9 +125,10 @@ END_FUNC(PKG) /* end H5HL__new() */
*
*-------------------------------------------------------------------------
*/
-BEGIN_FUNC(PKG, NOERR,
-herr_t, SUCCEED, -,
-H5HL__inc_rc(H5HL_t *heap))
+herr_t
+H5HL__inc_rc(H5HL_t *heap)
+{
+ FUNC_ENTER_PACKAGE_NOERR
/* check arguments */
HDassert(heap);
@@ -143,9 +136,9 @@ H5HL__inc_rc(H5HL_t *heap))
/* Increment heap's ref. count */
heap->rc++;
-END_FUNC(PKG) /* end H5HL__inc_rc() */
+ FUNC_LEAVE_NOAPI(SUCCEED)
+} /* end H5HL__inc_rc() */
-
/*-------------------------------------------------------------------------
* Function: H5HL__dec_rc
*
@@ -158,9 +151,12 @@ END_FUNC(PKG) /* end H5HL__inc_rc() */
*
*-------------------------------------------------------------------------
*/
-BEGIN_FUNC(PKG, ERR,
-herr_t, SUCCEED, FAIL,
-H5HL__dec_rc(H5HL_t *heap))
+herr_t
+H5HL__dec_rc(H5HL_t *heap)
+{
+ herr_t ret_value = SUCCEED;
+
+ FUNC_ENTER_PACKAGE
/* check arguments */
HDassert(heap);
@@ -168,14 +164,14 @@ H5HL__dec_rc(H5HL_t *heap))
/* Decrement heap's ref. count */
heap->rc--;
-CATCH
/* Check if we should destroy the heap */
- if(heap->rc == 0 && FAIL == H5HL__dest(heap))
- H5E_THROW(H5E_CANTFREE, "unable to destroy local heap");
+ if (heap->rc == 0 && FAIL == H5HL__dest(heap))
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTFREE, FAIL, "unable to destroy local heap");
-END_FUNC(PKG) /* end H5HL__dec_rc() */
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5HL__dec_rc() */
-
/*-------------------------------------------------------------------------
* Function: H5HL__dest
*
@@ -188,9 +184,12 @@ END_FUNC(PKG) /* end H5HL__dec_rc() */
*
*-------------------------------------------------------------------------
*/
-BEGIN_FUNC(PKG, ERR,
-herr_t, SUCCEED, FAIL,
-H5HL__dest(H5HL_t *heap))
+herr_t
+H5HL__dest(H5HL_t *heap)
+{
+ herr_t ret_value = SUCCEED;
+
+ FUNC_ENTER_PACKAGE
/* check arguments */
HDassert(heap);
@@ -201,20 +200,21 @@ H5HL__dest(H5HL_t *heap))
HDassert(heap->prfx == NULL);
HDassert(heap->dblk == NULL);
-CATCH
- if(heap->dblk_image)
- if(NULL != (heap->dblk_image = H5FL_BLK_FREE(lheap_chunk, heap->dblk_image)))
- H5E_THROW(H5E_CANTFREE, "unable to free local heap data block image");
- while(heap->freelist) {
- H5HL_free_t *fl;
+ /* Use DONE errors here to try to free as much as possible */
+ if (heap->dblk_image)
+ if (NULL != (heap->dblk_image = H5FL_BLK_FREE(lheap_chunk, heap->dblk_image)))
+ HDONE_ERROR(H5E_HEAP, H5E_CANTFREE, FAIL, "unable to free local heap data block image");
+ while (heap->freelist) {
+ H5HL_free_t *fl;
- fl = heap->freelist;
+ fl = heap->freelist;
heap->freelist = fl->next;
- if(NULL != (fl = H5FL_FREE(H5HL_free_t, fl)))
- H5E_THROW(H5E_CANTFREE, "unable to free local heap free list");
- } /* end while */
-
- if(NULL != (heap = H5FL_FREE(H5HL_t, heap)))
- H5E_THROW(H5E_CANTFREE, "unable to free local heap");
-
-END_FUNC(PKG) /* end H5HL__dest() */
+ if (NULL != (fl = H5FL_FREE(H5HL_free_t, fl)))
+ HDONE_ERROR(H5E_HEAP, H5E_CANTFREE, FAIL, "unable to free local heap free list");
+ }
+
+ if (NULL != (heap = H5FL_FREE(H5HL_t, heap)))
+ HDONE_ERROR(H5E_HEAP, H5E_CANTFREE, FAIL, "unable to free local heap");
+
+ FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5HL__dest() */