crecord: avoid setting non-existing SIGTSTP signal on windows (
issue5512)
Windows do not have a SIGTSTP so we avoid setting the handler if the signal is
unknown.
--- a/mercurial/crecord.py Thu Apr 06 11:25:13 2017 +0200
+++ b/mercurial/crecord.py Thu Apr 06 11:28:25 2017 +0200
@@ -473,14 +473,17 @@
"""
ui.write(_('starting interactive selection\n'))
chunkselector = curseschunkselector(headerlist, ui, operation)
- f = signal.getsignal(signal.SIGTSTP)
+ origsigtstp = sentinel = object()
+ if util.safehasattr(signal, 'SIGTSTP'):
+ origsigtstp = signal.getsignal(signal.SIGTSTP)
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)
+ if origsigtstp is not sentinel:
+ signal.signal(signal.SIGTSTP, origsigtstp)
return chunkselector.opts
def testdecorator(testfn, f):