From: Victor Stinner <vstinner@redhat.com> Date: Wed, 1 Aug 2018 14:41:25 +0000 (+0200) Subject: Define _Py_NO_RETURN for Microsoft C compiler (GH-8606) X-Git-Tag: v3.8.0a1~1263 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cfc8831f5ed607048679427f7d76d6cb4f8a2e8a;p=python Define _Py_NO_RETURN for Microsoft C compiler (GH-8606) --- diff --git a/Include/pyerrors.h b/Include/pyerrors.h index 416d750d9b..4e2995469f 100644 --- a/Include/pyerrors.h +++ b/Include/pyerrors.h @@ -97,13 +97,15 @@ PyAPI_FUNC(void) PyErr_SetExcInfo(PyObject *, PyObject *, PyObject *); (defined(__GNUC_MAJOR__) && \ ((__GNUC_MAJOR__ >= 3) || \ (__GNUC_MAJOR__ == 2) && (__GNUC_MINOR__ >= 5))) -#define _Py_NO_RETURN __attribute__((__noreturn__)) +# define _Py_NO_RETURN __attribute__((__noreturn__)) +#elif defined(_MSC_VER) +# define _Py_NO_RETURN __declspec(noreturn) #else -#define _Py_NO_RETURN +# define _Py_NO_RETURN #endif /* Defined in Python/pylifecycle.c */ -PyAPI_FUNC(void) Py_FatalError(const char *message) _Py_NO_RETURN; +PyAPI_FUNC(void) _Py_NO_RETURN Py_FatalError(const char *message); #if defined(Py_DEBUG) || defined(Py_LIMITED_API) #define _PyErr_OCCURRED() PyErr_Occurred() diff --git a/Include/pylifecycle.h b/Include/pylifecycle.h index 78f01eef11..c58c7ec95d 100644 --- a/Include/pylifecycle.h +++ b/Include/pylifecycle.h @@ -86,7 +86,7 @@ PyAPI_FUNC(void) Py_InitializeEx(int); #ifndef Py_LIMITED_API PyAPI_FUNC(_PyInitError) _Py_InitializeFromConfig( const _PyCoreConfig *config); -PyAPI_FUNC(void) _Py_FatalInitError(_PyInitError err) _Py_NO_RETURN; +PyAPI_FUNC(void) _Py_NO_RETURN _Py_FatalInitError(_PyInitError err); #endif PyAPI_FUNC(void) Py_Finalize(void); PyAPI_FUNC(int) Py_FinalizeEx(void); @@ -105,7 +105,7 @@ PyAPI_FUNC(void) _Py_PyAtExit(void (*func)(PyObject *), PyObject *); #endif PyAPI_FUNC(int) Py_AtExit(void (*func)(void)); -PyAPI_FUNC(void) Py_Exit(int) _Py_NO_RETURN; +PyAPI_FUNC(void) _Py_NO_RETURN Py_Exit(int); /* Restore signals that the interpreter has called SIG_IGN on to SIG_DFL. */ #ifndef Py_LIMITED_API diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index 0729a5f83b..63f461ab04 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -2212,7 +2212,7 @@ call_ll_exitfuncs(void) fflush(stderr); } -void +void _Py_NO_RETURN Py_Exit(int sts) { if (Py_FinalizeEx() < 0) {