bpo-36356: pymain_exit_error() only call pymain_free() for exit (GH-12968)

Add _Py_INIT_HAS_EXITCODE() macro.
This commit is contained in:
Victor Stinner 2019-04-26 13:05:47 +02:00 committed by GitHub
parent 00db7c73af
commit 4cb525a1f0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 3 deletions

View file

@ -570,7 +570,12 @@ exit_sigint(void)
static void _Py_NO_RETURN
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);
}