if (static std::atomic_bool handled{false}; handled.exchange(true)) {
return;
}
- FatalSignal::signaled(sig, info);
+ assert(info);
+ FatalSignal::signaled(sig, *info);
::signal(sig, SIG_DFL);
};
sigfillset(&sa.sa_mask);
// see handle_fatal_signal()
}
-static void print_segv_info(const siginfo_t* siginfo)
+static void print_segv_info(const siginfo_t& siginfo)
{
- std::cerr << "Fault at location: " << siginfo->si_addr << std::endl;
+ std::cerr << "Fault at location: " << siginfo.si_addr << std::endl;
std::cerr << std::flush;
}
}
}
-void FatalSignal::signaled(const int signum, const siginfo_t* siginfo)
+void FatalSignal::signaled(const int signum, const siginfo_t& siginfo)
{
switch (signum) {
case SIGSEGV:
FatalSignal();
private:
- static void signaled(int signum, const siginfo_t* siginfo);
+ static void signaled(int signum, const siginfo_t& siginfo);
template <int... SigNums>
void install_oneshot_signals_handler();