Files
openGauss-server/contrib/gtm/common/assert.cpp
2020-06-30 17:38:27 +08:00

46 lines
1.4 KiB
C++

/* -------------------------------------------------------------------------
*
* assert.c
* Assert code.
*
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
* Portions Copyright (c) 2010-2012 Postgres-XC Development Group
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/error/assert.c,v 1.35 2008/01/01 19:45:53 momjian Exp $
*
* NOTE
* This should eventually work with elog()
*
* -------------------------------------------------------------------------
*/
#include "gtm/gtm_c.h"
#include "gtm/assert.h"
#include <unistd.h>
bool assert_enabled = false;
/*
* ExceptionalCondition - Handles the failure of an Assert()
*
* Note: this can't actually return, but we declare it as returning int
* because the TrapMacro() macro might get wonky otherwise.
*/
int ExceptionalCondition(const char* conditionName, const char* errorType, const char* fileName, int lineNumber)
{
if (!PointerIsValid(conditionName) || !PointerIsValid(fileName) || !PointerIsValid(errorType)) {
fprintf(stderr, "TRAP: ExceptionalCondition: bad arguments\n");
} else {
fprintf(stderr, "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n", errorType, conditionName, fileName, lineNumber);
}
/* Usually this shouldn't be needed, but make sure the msg went out */
fflush(stderr);
abort();
return 0;
}