0029171: Foundation Classes - C signal handler does not work on MinGW
authorabv <abv@opencascade.com>
Sat, 7 Oct 2017 16:26:38 +0000 (19:26 +0300)
committerbugmaster <bugmaster@opencascade.com>
Wed, 11 Oct 2017 14:13:32 +0000 (17:13 +0300)
commit9e4791171cd6dd0185adffe50a2c5b65341c0a16
treea467469d8fbe4abc5274928ed85e5631e9dc325f
parent022d142b242cb27cc99dd62c4a5193a16697737b
0029171: Foundation Classes - C signal handler does not work on MinGW

Setting signal handler is enabled in OSD::SetSignal() for MinGW (works only for SEH builds of MinGW, not for SJLJ builds).

Due to absence of function _set_se_translator(), handler is set using C signal() function and thus is called asynchronously.
Macro OCC_CONVERT_SIGNALS is enabled for MinGW build to support converting signals to C++ exceptions using long jumps (the same as on Linux).
Code raising exceptions in OSD::SetSignal() is corrected to use method Jump() instead of C++ throw.
adm/cmake/occt_defs_flags.cmake
src/OSD/OSD_signal.cxx