# HG changeset patch # User Yuya Nishihara # Date 1594642460 -32400 # Node ID efcc87d37f4dde305ddaebe11aa8d71be5532478 # Parent 9e6b86a8f4380623b6381b2d03ce3ae480f98e80 dispatch: handle late KeyboardInterrupt occurred in run() User can press Ctrl+C while flushing streams in dispatch.run(). In such case, I think exiting with 255 is better than printing Python traceback and exiting with 1. diff -r 9e6b86a8f438 -r efcc87d37f4d mercurial/dispatch.py --- a/mercurial/dispatch.py Mon Jul 13 21:06:34 2020 +0900 +++ b/mercurial/dispatch.py Mon Jul 13 21:14:20 2020 +0900 @@ -140,8 +140,10 @@ status = -1 _silencestdio() - finally: - pass + except KeyboardInterrupt: + # Catch early/late KeyboardInterrupt as last ditch. Here nothing will + # be printed to console to avoid another IOError/KeyboardInterrupt. + status = -1 sys.exit(status & 255)