OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
TryCatchSignalSEH.cpp File Reference
#include "TryCatchSignalSEH.hpp"
#include <windows.h>
Include dependency graph for TryCatchSignalSEH.cpp:

Go to the source code of this file.

Functions

static int signal_seh_filter (int sigcnt, const Slic3r::SignalT *sigs, unsigned long seh_code)

Function Documentation

◆ signal_seh_filter()

int signal_seh_filter ( int sigcnt,
const Slic3r::SignalT * sigs,
unsigned long seh_code )
static
7{
8 int ret = EXCEPTION_CONTINUE_SEARCH;
9
10 for (int s = 0; s < sigcnt && ret != EXCEPTION_EXECUTE_HANDLER; ++s)
11 switch (sigs[s]) {
12 case SIGSEGV:
13 if (seh_code == STATUS_ACCESS_VIOLATION)
14 ret = EXCEPTION_EXECUTE_HANDLER;
15 break;
16 case SIGILL:
17 if (seh_code == STATUS_ILLEGAL_INSTRUCTION)
18 ret = EXCEPTION_EXECUTE_HANDLER;
19 break;
20 case SIGFPE:
21 if (seh_code == STATUS_FLOAT_DIVIDE_BY_ZERO ||
22 seh_code == STATUS_FLOAT_OVERFLOW ||
23 seh_code == STATUS_FLOAT_UNDERFLOW ||
24 seh_code == STATUS_INTEGER_DIVIDE_BY_ZERO)
25 ret = EXCEPTION_EXECUTE_HANDLER;
26 break;
27 default: ret = EXCEPTION_CONTINUE_SEARCH;
28 }
29
30 return ret;
31}

Referenced by Slic3r::detail::try_catch_signal_seh().

Here is the caller graph for this function: