[PATCH 3 of 5 STABLE] crecord: avoid setting non-existing signal SIGWINCH on windows

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


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
# Date 1491470733 -7200
#      Thu Apr 06 11:25:33 2017 +0200
# Branch stable
# Node ID 7c33ce6b8a6991d4189c7d379a78a2c2fa802c35
# Parent  85d5c3551f2b44399418e00fd62630344694ed1c
# 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 7c33ce6b8a69
crecord: avoid setting non-existing signal SIGWINCH on windows

Windows do not have a SIGWINCH so we avoid setting the handler if the signal is
unknown.

diff --git a/mercurial/crecord.py b/mercurial/crecord.py
--- a/mercurial/crecord.py
+++ b/mercurial/crecord.py
@@ -1611,12 +1611,15 @@ are you sure you want to review/edit and
         method to be wrapped by curses.wrapper() for selecting chunks.
         """
 
-        origsigwinchhandler = signal.signal(signal.SIGWINCH,
-                                            self.sigwinchhandler)
+        origsigwinch = sentinel = object()
+        if util.safehasattr(signal, 'SIGWINCH'):
+            origsigwinch = signal.signal(signal.SIGWINCH,
+                                         self.sigwinchhandler)
         try:
             return self._main(stdscr)
         finally:
-            signal.signal(signal.SIGWINCH, origsigwinchhandler)
+            if origsigwinch is not sentinel:
+                signal.signal(signal.SIGWINCH, origsigwinch)
 
     def _main(self, stdscr):
         self.stdscr = stdscr


More information about the Mercurial-devel mailing list