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