Skip to content
Snippets Groups Projects
Commit ad1ed225 authored by Mark Grondona's avatar Mark Grondona
Browse files

xassert; Initial Revision

parent 93022632
No related branches found
No related tags found
No related merge requests found
/* $Id$ */
/*
** xassert: replacement for assert which sends error to log instead of stderr
**
*/
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdlib.h>
#include <stdio.h>
#include <src/common/log.h>
void __xassert_failed(char *expr, const char *file, int line, char *func)
{
fatal("%s:%d: %s(): Assertion (%s) failed.\n", file, line, func, expr);
/* in case abort was disabled in fatal() */
abort();
}
/* $Id$ */
/*
** xassert: assert type macro with configurable handling
** If NDEBUG is defined, do nothing.
** If not, and expression is zero, log an error message and abort.
*/
#ifndef _XASSERT_H
#define _XASSERT_H 1
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include "macros.h"
#ifdef NDEBUG
# define assert(expr) ((void)0)
#else /* !NDEBUG */
# define xassert(__ex) _STMT_START { \
(__ex) ? ((void)0) : \
__xassert_failed(__STRING(__ex), __FILE__, __LINE__, __CURRENT_FUNC__) \
} _STMT_END
/* This prints the assertion failed message to the slurm log facility
** (see log.h) and aborts the calling program
** (messages go to stderr if log is not initialized)
*/
extern void __xassert_failed(char *, const char *, int, const char *)
__NORETURN_ATTR;
#endif /* NDEBUG. */
#endif /* !__XASSERT_H */
/* vim: set sw=4 ts=4 expandtabs */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment