mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-23 06:33:57 -06:00
Catching of sigsegv and sigfpe with structured exceptions on win
This commit is contained in:
parent
a5529aff1e
commit
976dd72b8b
8 changed files with 115 additions and 39 deletions
27
src/libslic3r/TryCatchSignalSEH.hpp
Normal file
27
src/libslic3r/TryCatchSignalSEH.hpp
Normal file
|
@ -0,0 +1,27 @@
|
|||
#ifndef TRY_CATCH_SIGNAL_SEH_HPP
|
||||
#define TRY_CATCH_SIGNAL_SEH_HPP
|
||||
|
||||
#include <functional>
|
||||
#include <csignal>
|
||||
|
||||
namespace Slic3r {
|
||||
|
||||
using SignalT = decltype (SIGSEGV);
|
||||
|
||||
namespace detail {
|
||||
|
||||
void try_catch_signal_seh(int sigcnt, const SignalT *sigs,
|
||||
std::function<void()> &&fn,
|
||||
std::function<void()> &&cfn);
|
||||
|
||||
}
|
||||
|
||||
template<class TryFn, class CatchFn, int N>
|
||||
void try_catch_signal(const SignalT (&sigs)[N], TryFn &&fn, CatchFn &&cfn)
|
||||
{
|
||||
detail::try_catch_signal_seh(N, sigs, fn, cfn);
|
||||
}
|
||||
|
||||
} // Slic3r
|
||||
|
||||
#endif // TRY_CATCH_SIGNAL_SEH_HPP
|
Loading…
Add table
Add a link
Reference in a new issue