[PATCH 4 of 5 STABLE] crecord: ensure we reinstall the SIGSTOP handler

Pierre-Yves David pierre-yves.david at ens-lyon.org
Wed Apr 12 04:41:19 EDT 2017


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
# Date 1491470713 -7200
#      Thu Apr 06 11:25:13 2017 +0200
# Branch stable
# Node ID f83025d451fa293849f819cc997bc3f8c9ce42e0
# Parent  7c33ce6b8a6991d4189c7d379a78a2c2fa802c35
# EXP-Topic crecord-windows
# Available At https://www.mercurial-scm.org/repo/users/marmoute/mercurial/
#              hg pull https://www.mercurial-scm.org/repo/users/marmoute/mercurial/ -r f83025d451fa
crecord: ensure we reinstall the SIGSTOP handler

Previous, exceptions would prevent the reinstallation of the
signal.

diff --git a/mercurial/crecord.py b/mercurial/crecord.py
--- a/mercurial/crecord.py
+++ b/mercurial/crecord.py
@@ -474,11 +474,13 @@ def chunkselector(ui, headerlist, operat
     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):


More information about the Mercurial-devel mailing list