diff options
Diffstat (limited to 'Python/pythonrun.c')
-rw-r--r-- | Python/pythonrun.c | 27 |
1 files changed, 3 insertions, 24 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 945e267..36390da 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -1528,12 +1528,8 @@ _Py_SourceAsString(PyObject *cmd, const char *funcname, const char *what, PyComp } #if defined(USE_STACKCHECK) -#if defined(WIN32) && defined(_MSC_VER) -/* Stack checking for Microsoft C */ - -#include <malloc.h> -#include <excpt.h> +/* Stack checking */ /* * Return non-zero when we run out of memory on the stack; zero otherwise. @@ -1541,27 +1537,10 @@ _Py_SourceAsString(PyObject *cmd, const char *funcname, const char *what, PyComp int PyOS_CheckStack(void) { - __try { - /* alloca throws a stack overflow exception if there's - not enough space left on the stack */ - alloca(PYOS_STACK_MARGIN * sizeof(void*)); - return 0; - } __except (GetExceptionCode() == STATUS_STACK_OVERFLOW ? - EXCEPTION_EXECUTE_HANDLER : - EXCEPTION_CONTINUE_SEARCH) { - int errcode = _resetstkoflw(); - if (errcode == 0) - { - Py_FatalError("Could not reset the stack!"); - } - } - return 1; + PyThreadState *tstate = _PyThreadState_GET(); + return _Py_ReachedRecursionLimit(tstate); } -#endif /* WIN32 && _MSC_VER */ - -/* Alternate implementations can be added here... */ - #endif /* USE_STACKCHECK */ /* Deprecated C API functions still provided for binary compatibility */ |