Commit 81107282 authored by Peter Eisentraut's avatar Peter Eisentraut

Change return type of ExceptionalCondition to void and mark it noreturn

In ancient times, it was thought that this wouldn't work because of
TrapMacro/AssertMacro, but changing those to use a comma operator
appears to work without compiler warnings.
parent 2227bb9c
......@@ -21,11 +21,8 @@
/*
* 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
void
ExceptionalCondition(const char *conditionName,
const char *errorType,
const char *fileName,
......@@ -55,6 +52,4 @@ ExceptionalCondition(const char *conditionName,
#endif
abort();
return 0;
}
......@@ -1507,15 +1507,9 @@ pg_re_throw(void)
errfinish(0);
}
/* We mustn't return... */
/* Doesn't return ... */
ExceptionalCondition("pg_re_throw tried to return", "FailedAssertion",
__FILE__, __LINE__);
/*
* Since ExceptionalCondition isn't declared noreturn because of
* TrapMacro(), we need this to keep gcc from complaining.
*/
abort();
}
......
......@@ -655,14 +655,14 @@ extern PGDLLIMPORT bool assert_enabled;
/*
* TrapMacro is the same as Trap but it's intended for use in macros:
*
* #define foo(x) (AssertMacro(x != 0) && bar(x))
* #define foo(x) (AssertMacro(x != 0), bar(x))
*
* Isn't CPP fun?
*/
#define TrapMacro(condition, errorType) \
((bool) ((! assert_enabled) || ! (condition) || \
(ExceptionalCondition(CppAsString(condition), (errorType), \
__FILE__, __LINE__))))
__FILE__, __LINE__), 0)))
#ifndef USE_ASSERT_CHECKING
#define Assert(condition)
......@@ -683,8 +683,8 @@ extern PGDLLIMPORT bool assert_enabled;
Trap(!(condition), "BadState")
#endif /* USE_ASSERT_CHECKING */
extern int ExceptionalCondition(const char *conditionName,
extern void ExceptionalCondition(const char *conditionName,
const char *errorType,
const char *fileName, int lineNumber);
const char *fileName, int lineNumber) __attribute__((noreturn));
#endif /* POSTGRES_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment