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.
--- 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)