| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 6df27f8 commit 4622e14
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -68,6 +68,10 @@ extern "C" { | |||
| 68 | 68 | #include "Python.h" | |
| 69 | 69 | #include <signal.h> | |
| 70 | 70 | ||
| 71 | + #if defined(__FreeBSD__) | ||
| 72 | + # include <ieeefp.h> | ||
| 73 | + #endif | ||
| 74 | + | ||
| 71 | 75 | #ifndef WANT_SIGFPE_HANDLER | |
| 72 | 76 | /* Define locally if they are not defined in Python. This gives only | |
| 73 | 77 | * the limited control to induce a core dump in case of an exception. | |
@@ -178,6 +182,12 @@ static void fpe_reset(Sigfunc *handler) | |||
| 178 | 182 | #endif | |
| 179 | 183 | signal(SIGFPE, handler); | |
| 180 | 184 | ||
| 185 | + /*-- FreeBSD ----------------------------------------------------------------*/ | ||
| 186 | + #elif defined(__FreeBSD__) | ||
| 187 | + fpresetsticky( fpgetsticky() ); | ||
| 188 | + fpsetmask( FP_X_INV | FP_X_DZ | FP_X_OFL ); | ||
| 189 | + signal( SIGFPE, handler ); | ||
| 190 | + | ||
| 181 | 191 | /*-- Linux ----------------------------------------------------------------*/ | |
| 182 | 192 | #elif defined(linux) | |
| 183 | 193 | #ifdef __GLIBC__ | |
@@ -212,7 +222,12 @@ static void fpe_reset(Sigfunc *handler) | |||
| 212 | 222 | ||
| 213 | 223 | static PyObject *turnoff_sigfpe(PyObject *self,PyObject *args) | |
| 214 | 224 | { | |
| 225 | + #ifdef __FreeBSD__ | ||
| 226 | + fpresetsticky( fpgetsticky() ); | ||
| 227 | + fpsetmask( 0 ); | ||
| 228 | + #else | ||
| 215 | 229 | fputs("Operation not implemented\n", stderr); | |
| 230 | + #endif | ||
| 216 | 231 | Py_INCREF (Py_None); | |
| 217 | 232 | return Py_None; | |
| 218 | 233 | } | |
| Back | FazBrowse Home | New Git URL |
0 commit comments