bpo-36356: pymain_exit_error() only call pymain_free() for exit (GH-12968)
Add _Py_INIT_HAS_EXITCODE() macro.
This commit is contained in:
parent
00db7c73af
commit
4cb525a1f0
|
@ -33,8 +33,10 @@ typedef struct {
|
||||||
#define _Py_INIT_NO_MEMORY() _Py_INIT_USER_ERR("memory allocation failed")
|
#define _Py_INIT_NO_MEMORY() _Py_INIT_USER_ERR("memory allocation failed")
|
||||||
#define _Py_INIT_EXIT(EXITCODE) \
|
#define _Py_INIT_EXIT(EXITCODE) \
|
||||||
(_PyInitError){.prefix = NULL, .msg = NULL, .user_err = 0, .exitcode = (EXITCODE)}
|
(_PyInitError){.prefix = NULL, .msg = NULL, .user_err = 0, .exitcode = (EXITCODE)}
|
||||||
|
#define _Py_INIT_HAS_EXITCODE(err) \
|
||||||
|
(err.exitcode != -1)
|
||||||
#define _Py_INIT_FAILED(err) \
|
#define _Py_INIT_FAILED(err) \
|
||||||
(err.msg != NULL || err.exitcode != -1)
|
(err.msg != NULL || _Py_INIT_HAS_EXITCODE(err))
|
||||||
|
|
||||||
/* --- _PyWstrList ------------------------------------------------ */
|
/* --- _PyWstrList ------------------------------------------------ */
|
||||||
|
|
||||||
|
|
|
@ -570,7 +570,12 @@ exit_sigint(void)
|
||||||
static void _Py_NO_RETURN
|
static void _Py_NO_RETURN
|
||||||
pymain_exit_error(_PyInitError err)
|
pymain_exit_error(_PyInitError err)
|
||||||
{
|
{
|
||||||
pymain_free();
|
if (_Py_INIT_HAS_EXITCODE(err)) {
|
||||||
|
/* If it's an error rather than a regular exit, leave Python runtime
|
||||||
|
alive: _Py_ExitInitError() uses the current exception and use
|
||||||
|
sys.stdout in this case. */
|
||||||
|
pymain_free();
|
||||||
|
}
|
||||||
_Py_ExitInitError(err);
|
_Py_ExitInitError(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2172,7 +2172,7 @@ Py_FatalError(const char *msg)
|
||||||
void _Py_NO_RETURN
|
void _Py_NO_RETURN
|
||||||
_Py_ExitInitError(_PyInitError err)
|
_Py_ExitInitError(_PyInitError err)
|
||||||
{
|
{
|
||||||
if (err.exitcode >= 0) {
|
if (_Py_INIT_HAS_EXITCODE(err)) {
|
||||||
exit(err.exitcode);
|
exit(err.exitcode);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
Loading…
Reference in New Issue