diff options
author | Victor Stinner <vstinner@redhat.com> | 2019-05-04 15:48:05 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-04 15:48:05 (GMT) |
commit | c664b342a47e4b4650706d07e3e40a295e3a4407 (patch) | |
tree | 960378ef676a7dc621be03f0b7744ce73a0948c0 /Include | |
parent | 6b5b013bcc22a27d6231c2796882e44ddb42be67 (diff) | |
download | cpython-c664b342a47e4b4650706d07e3e40a295e3a4407.zip cpython-c664b342a47e4b4650706d07e3e40a295e3a4407.tar.gz cpython-c664b342a47e4b4650706d07e3e40a295e3a4407.tar.bz2 |
bpo-36475: Make PyThread_exit_thread with _Py_NO_RETURN (GH-13068)
Diffstat (limited to 'Include')
-rw-r--r-- | Include/pyerrors.h | 11 | ||||
-rw-r--r-- | Include/pyport.h | 14 | ||||
-rw-r--r-- | Include/pythread.h | 2 |
3 files changed, 15 insertions, 12 deletions
diff --git a/Include/pyerrors.h b/Include/pyerrors.h index 5c67518..94af3cb 100644 --- a/Include/pyerrors.h +++ b/Include/pyerrors.h @@ -21,17 +21,6 @@ PyAPI_FUNC(void) PyErr_GetExcInfo(PyObject **, PyObject **, PyObject **); PyAPI_FUNC(void) PyErr_SetExcInfo(PyObject *, PyObject *, PyObject *); #endif -#if defined(__clang__) || \ - (defined(__GNUC__) && \ - ((__GNUC__ >= 3) || \ - (__GNUC__ == 2) && (__GNUC_MINOR__ >= 5))) -# define _Py_NO_RETURN __attribute__((__noreturn__)) -#elif defined(_MSC_VER) -# define _Py_NO_RETURN __declspec(noreturn) -#else -# define _Py_NO_RETURN -#endif - /* Defined in Python/pylifecycle.c */ PyAPI_FUNC(void) _Py_NO_RETURN Py_FatalError(const char *message); diff --git a/Include/pyport.h b/Include/pyport.h index 97fb5e5..ab88a9a 100644 --- a/Include/pyport.h +++ b/Include/pyport.h @@ -829,4 +829,18 @@ extern _invalid_parameter_handler _Py_silent_invalid_parameter_handler; # define _Py_FORCE_UTF8_FS_ENCODING #endif +/* Mark a function which cannot return. Example: + + PyAPI_FUNC(void) _Py_NO_RETURN PyThread_exit_thread(void); */ +#if defined(__clang__) || \ + (defined(__GNUC__) && \ + ((__GNUC__ >= 3) || \ + (__GNUC__ == 2) && (__GNUC_MINOR__ >= 5))) +# define _Py_NO_RETURN __attribute__((__noreturn__)) +#elif defined(_MSC_VER) +# define _Py_NO_RETURN __declspec(noreturn) +#else +# define _Py_NO_RETURN +#endif + #endif /* Py_PYPORT_H */ diff --git a/Include/pythread.h b/Include/pythread.h index eb61033..bc1d92c 100644 --- a/Include/pythread.h +++ b/Include/pythread.h @@ -23,7 +23,7 @@ typedef enum PyLockStatus { PyAPI_FUNC(void) PyThread_init_thread(void); PyAPI_FUNC(unsigned long) PyThread_start_new_thread(void (*)(void *), void *); -PyAPI_FUNC(void) PyThread_exit_thread(void); +PyAPI_FUNC(void) _Py_NO_RETURN PyThread_exit_thread(void); PyAPI_FUNC(unsigned long) PyThread_get_thread_ident(void); PyAPI_FUNC(PyThread_type_lock) PyThread_allocate_lock(void); |