summaryrefslogtreecommitdiffstats
path: root/src/H5Eint.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5Eint.c')
-rw-r--r--src/H5Eint.c35
1 files changed, 18 insertions, 17 deletions
diff --git a/src/H5Eint.c b/src/H5Eint.c
index f650581..594a69a 100644
--- a/src/H5Eint.c
+++ b/src/H5Eint.c
@@ -132,7 +132,7 @@ DESCRIPTION
static herr_t
H5E_init_int_interface(void)
{
- FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5E_init_int_interface)
+ FUNC_ENTER_NOAPI_NOINIT_NOERR
FUNC_LEAVE_NOAPI(H5E_init())
} /* H5E_init_int_interface() */
@@ -156,7 +156,7 @@ H5E_get_msg(const H5E_msg_t *msg, H5E_type_t *type, char *msg_str, size_t size)
{
ssize_t len; /* Length of error message */
- FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5E_get_msg)
+ FUNC_ENTER_NOAPI_NOINIT_NOERR
/* Check arguments */
HDassert(msg);
@@ -227,7 +227,7 @@ H5E_walk1_cb(int n, H5E_error1_t *err_desc, void *client_data)
unsigned have_desc = 1; /* Flag to indicate whether the error has a "real" description */
herr_t ret_value = SUCCEED;
- FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5E_walk1_cb)
+ FUNC_ENTER_NOAPI_NOINIT_NOERR
/* Check arguments */
HDassert(err_desc);
@@ -349,7 +349,7 @@ H5E_walk2_cb(unsigned n, const H5E_error2_t *err_desc, void *client_data)
unsigned have_desc = 1; /* Flag to indicate whether the error has a "real" description */
herr_t ret_value = SUCCEED;
- FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5E_walk2_cb)
+ FUNC_ENTER_NOAPI_NOINIT_NOERR
/* Check arguments */
HDassert(err_desc);
@@ -450,8 +450,7 @@ H5E_print(const H5E_t *estack, FILE *stream, hbool_t bk_compatible)
H5E_walk_op_t walk_op; /* Error stack walking callback */
herr_t ret_value = SUCCEED;
- /* Don't clear the error stack! :-) */
- FUNC_ENTER_NOAPI_NOINIT(H5E_print)
+ FUNC_ENTER_NOAPI_NOINIT
/* Sanity check */
HDassert(estack);
@@ -526,7 +525,7 @@ H5E_walk(const H5E_t *estack, H5E_direction_t direction, const H5E_walk_op_t *op
herr_t status; /* Status from callback function */
herr_t ret_value = SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI_NOINIT(H5E_walk)
+ FUNC_ENTER_NOAPI_NOINIT
/* Sanity check */
HDassert(estack);
@@ -620,7 +619,7 @@ done:
herr_t
H5E_get_auto(const H5E_t *estack, H5E_auto_op_t *op, void **client_data)
{
- FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5E_get_auto)
+ FUNC_ENTER_NOAPI_NOINIT_NOERR
HDassert(estack);
@@ -660,7 +659,7 @@ H5E_get_auto(const H5E_t *estack, H5E_auto_op_t *op, void **client_data)
herr_t
H5E_set_auto(H5E_t *estack, const H5E_auto_op_t *op, void *client_data)
{
- FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5E_set_auto)
+ FUNC_ENTER_NOAPI_NOINIT_NOERR
HDassert(estack);
@@ -694,6 +693,7 @@ H5E_printf_stack(H5E_t *estack, const char *file, const char *func, unsigned lin
int desc_len; /* Actual length of description when formatted */
#endif /* H5_HAVE_VASPRINTF */
char *tmp = NULL; /* Buffer to place formatted description in */
+ hbool_t va_started = FALSE; /* Whether the variable argument list is open */
herr_t ret_value = SUCCEED; /* Return value */
/*
@@ -703,7 +703,7 @@ H5E_printf_stack(H5E_t *estack, const char *file, const char *func, unsigned lin
* HERROR(). HERROR() is called by HRETURN_ERROR() which could
* be called by FUNC_ENTER().
*/
- FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5E_printf_stack)
+ FUNC_ENTER_NOAPI_NOINIT_NOERR
/* Sanity check */
HDassert(cls_id > 0);
@@ -718,6 +718,7 @@ H5E_printf_stack(H5E_t *estack, const char *file, const char *func, unsigned lin
/* Start the variable-argument parsing */
va_start(ap, fmt);
+ va_started = TRUE;
#ifdef H5_HAVE_VASPRINTF
/* Use the vasprintf() routine, since it does what we're trying to do below */
@@ -759,13 +760,13 @@ H5E_printf_stack(H5E_t *estack, const char *file, const char *func, unsigned lin
} /* end while */
#endif /* H5_HAVE_VASPRINTF */
- va_end(ap);
-
/* Push the error on the stack */
if(H5E_push_stack(estack, file, func, line, cls_id, maj_id, min_id, tmp) < 0)
HGOTO_DONE(FAIL)
done:
+ if(va_started)
+ va_end(ap);
if(tmp)
H5MM_xfree(tmp);
@@ -806,7 +807,7 @@ H5E_push_stack(H5E_t *estack, const char *file, const char *func, unsigned line,
* HERROR(). HERROR() is called by HRETURN_ERROR() which could
* be called by FUNC_ENTER().
*/
- FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5E_push_stack)
+ FUNC_ENTER_NOAPI_NOINIT_NOERR
/* Sanity check */
HDassert(cls_id > 0);
@@ -880,7 +881,7 @@ H5E_clear_entries(H5E_t *estack, size_t nentries)
unsigned u; /* Local index variable */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI_NOINIT(H5E_clear_entries)
+ FUNC_ENTER_NOAPI_NOINIT
/* Sanity check */
HDassert(estack);
@@ -934,7 +935,7 @@ H5E_clear_stack(H5E_t *estack)
{
herr_t ret_value = SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5E_clear_stack, FAIL)
+ FUNC_ENTER_NOAPI(FAIL)
/* Check for 'default' error stack */
if(estack == NULL)
@@ -970,7 +971,7 @@ H5E_pop(H5E_t *estack, size_t count)
{
herr_t ret_value = SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI_NOINIT(H5E_pop)
+ FUNC_ENTER_NOAPI_NOINIT
/* Sanity check */
HDassert(estack);
@@ -1004,7 +1005,7 @@ H5E_dump_api_stack(hbool_t is_api)
{
herr_t ret_value = SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5E_dump_api_stack, FAIL)
+ FUNC_ENTER_NOAPI(FAIL)
/* Only dump the error stack during an API call */
if(is_api) {