changeset 52586:058b051bc44f

fsmonitor: don't leak a file descriptor in the status command Not as big of a deal as a file that might need to be renamed/moved, but the fd counts against process resources, so it should be managed.
author Matt Harbison <matt_harbison@yahoo.com>
date Mon, 16 Dec 2024 20:24:56 -0500
parents 5502109ac769
children 1a7bc756e3f2
files hgext/fsmonitor/__init__.py
diffstat 1 files changed, 17 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/fsmonitor/__init__.py	Mon Dec 16 20:04:44 2024 -0500
+++ b/hgext/fsmonitor/__init__.py	Mon Dec 16 20:24:56 2024 -0500
@@ -667,22 +667,24 @@
         quiet = self.ui.quiet
         self.ui.quiet = True
         fout, ferr = self.ui.fout, self.ui.ferr
-        self.ui.fout = self.ui.ferr = open(os.devnull, 'wb')
+
+        with open(os.devnull, 'wb') as fp:
+            self.ui.fout = self.ui.ferr = fp
 
-        try:
-            rv2 = orig(
-                node1,
-                node2,
-                match,
-                listignored,
-                listclean,
-                listunknown,
-                listsubrepos,
-            )
-        finally:
-            self.dirstate._fsmonitordisable = False
-            self.ui.quiet = quiet
-            self.ui.fout, self.ui.ferr = fout, ferr
+            try:
+                rv2 = orig(
+                    node1,
+                    node2,
+                    match,
+                    listignored,
+                    listclean,
+                    listunknown,
+                    listsubrepos,
+                )
+            finally:
+                self.dirstate._fsmonitordisable = False
+                self.ui.quiet = quiet
+                self.ui.fout, self.ui.ferr = fout, ferr
 
         # clean isn't tested since it's set to True above
         with self.wlock():