diff --git a/tests/catch/catch.hpp b/tests/catch/catch.hpp
index 32701b2bd7..883b2fc96d 100644
--- a/tests/catch/catch.hpp
+++ b/tests/catch/catch.hpp
@@ -8047,7 +8047,7 @@ namespace Catch {
static bool isSet;
static struct sigaction oldSigActions[];
static stack_t oldSigStack;
- static char altStackMem[];
+ static char *altStackMem;
static void handleSignal( int sig );
@@ -10826,7 +10826,7 @@ namespace Catch {
// 32kb for the alternate stack seems to be sufficient. However, this value
// is experimentally determined, so that's not guaranteed.
- static constexpr std::size_t sigStackSize = 32768 >= MINSIGSTKSZ ? 32768 : MINSIGSTKSZ;
+ static std::size_t sigStackSize = 32768 >= MINSIGSTKSZ ? 32768 : MINSIGSTKSZ;
static SignalDefs signalDefs[] = {
{ SIGINT, "SIGINT - Terminal interrupt signal" },
@@ -10851,6 +10851,7 @@ namespace Catch {
}
FatalConditionHandler::FatalConditionHandler() {
+ altStackMem = new char[sigStackSize];
isSet = true;
stack_t sigStack;
sigStack.ss_sp = altStackMem;
@@ -10868,6 +10869,7 @@ namespace Catch {
FatalConditionHandler::~FatalConditionHandler() {
reset();
+ delete[] altStackMem;
}
void FatalConditionHandler::reset() {
@@ -10885,7 +10887,7 @@ namespace Catch {
bool FatalConditionHandler::isSet = false;
struct sigaction FatalConditionHandler::oldSigActions[sizeof(signalDefs)/sizeof(SignalDefs)] = {};
stack_t FatalConditionHandler::oldSigStack = {};
- char FatalConditionHandler::altStackMem[sigStackSize] = {};
+ char *FatalConditionHandler::altStackMem;
} // namespace Catch