18#include "CarlaProcessUtils.hpp"
23#if !(defined(CARLA_OS_WASM) || defined(CARLA_OS_WIN))
24ScopedAbortCatcher::ScopedAbortCatcher()
27 s_oldsig = ::setjmp(s_env) == 0
28 ? std::signal(SIGABRT, sig_handler)
32ScopedAbortCatcher::~ScopedAbortCatcher()
34 if (s_oldsig !=
nullptr && ! s_triggered)
35 std::signal(SIGABRT, s_oldsig);
38bool ScopedAbortCatcher::s_triggered =
false;
40jmp_buf ScopedAbortCatcher::s_env;
41sig_t ScopedAbortCatcher::s_oldsig;
43void ScopedAbortCatcher::sig_handler(
const int signum)
48 std::signal(signum, s_oldsig);
49 std::longjmp(s_env, 1);
55CarlaSignalRestorer::CarlaSignalRestorer()
57#if !(defined(CARLA_OS_WASM) || defined(CARLA_OS_WIN))
58 carla_zeroStructs(sigs, 16);
60 for (
int i=0;
i < 16; ++
i)
61 ::sigaction(
i+1,
nullptr, &sigs[
i]);
65CarlaSignalRestorer::~CarlaSignalRestorer()
67#if !(defined(CARLA_OS_WASM) || defined(CARLA_OS_WIN))
68 for (
int i=0;
i < 16; ++
i)
69 ::sigaction(
i+1, &sigs[
i],
nullptr);
#define CARLA_SAFE_ASSERT_INT2_RETURN(cond, v1, v2, ret)
Definition CarlaDefines.h:207
#define nullptr
Definition DistrhoDefines.h:75
register unsigned i
Definition inflate.c:1575