diff mercurial/utils/procutil.py @ 39807:e5724be689b3 stable

procutil: compare fd number to see if stdio protection is needed (issue5992) When I wrote this function for commandserver at 69f86b937035, testing object identity was suffice, and I was sloppy enough not to compare fileno() values. However, it doesn't work in chg session because chgserver reopens stdio to apply new buffering mode. This patch partially fixes the issue 5992. Still we have another problem in chgui._runsystem().
author Yuya Nishihara <yuya@tcha.org>
date Wed, 26 Sep 2018 20:53:59 +0900
parents 313a940d49a3
children a9f56e4501c1
line wrap: on
line diff
--- a/mercurial/utils/procutil.py	Tue Sep 25 23:06:02 2018 +0900
+++ b/mercurial/utils/procutil.py	Wed Sep 26 20:53:59 2018 +0900
@@ -273,13 +273,13 @@
     """
     uout.flush()
     fin, fout = uin, uout
-    if uin is stdin:
+    if _testfileno(uin, stdin):
         newfd = os.dup(uin.fileno())
         nullfd = os.open(os.devnull, os.O_RDONLY)
         os.dup2(nullfd, uin.fileno())
         os.close(nullfd)
         fin = os.fdopen(newfd, r'rb')
-    if uout is stdout:
+    if _testfileno(uout, stdout):
         newfd = os.dup(uout.fileno())
         os.dup2(stderr.fileno(), uout.fileno())
         fout = os.fdopen(newfd, r'wb')