crecord: ensure we reinstall the SIGTSTP handler
Previous, exceptions would prevent the reinstallation of the
signal.
--- a/mercurial/crecord.py Thu Apr 06 11:25:33 2017 +0200
+++ b/mercurial/crecord.py Thu Apr 06 11:25:13 2017 +0200
@@ -474,11 +474,13 @@
ui.write(_('starting interactive selection\n'))
chunkselector = curseschunkselector(headerlist, ui, operation)
f = signal.getsignal(signal.SIGTSTP)
- curses.wrapper(chunkselector.main)
- if chunkselector.initerr is not None:
- raise error.Abort(chunkselector.initerr)
- # ncurses does not restore signal handler for SIGTSTP
- signal.signal(signal.SIGTSTP, f)
+ try:
+ curses.wrapper(chunkselector.main)
+ if chunkselector.initerr is not None:
+ raise error.Abort(chunkselector.initerr)
+ # ncurses does not restore signal handler for SIGTSTP
+ finally:
+ signal.signal(signal.SIGTSTP, f)
return chunkselector.opts
def testdecorator(testfn, f):