profile: use explicit logic to control file closing
authorPierre-Yves David <pierre-yves.david@octobus.net>
Mon, 12 Jun 2017 17:14:56 +0200
changeset 32805 2b0fc56840d0
parent 32804 c0b2c8f25ad9
child 32806 3a4c677cbd6e
profile: use explicit logic to control file closing We make the decision to close 'fp' more explicit instead of relying on the implication of other variable. This makes the overall logic more robust.
mercurial/profiling.py
--- a/mercurial/profiling.py	Mon Jun 12 17:13:35 2017 +0200
+++ b/mercurial/profiling.py	Mon Jun 12 17:14:56 2017 +0200
@@ -151,6 +151,7 @@
         self._ui = ui
         self._output = None
         self._fp = None
+        self._fpdoclose = True
         self._profiler = None
         self._enabled = enabled
         self._entered = False
@@ -193,6 +194,7 @@
             path = self._ui.expandpath(self._output)
             self._fp = open(path, 'wb')
         else:
+            self._fpdoclose = False
             self._fp = self._ui.ferr
 
         if proffn is not None:
@@ -221,4 +223,5 @@
             self._closefp()
 
     def _closefp(self):
-        self._fp.close()
+        if self._fpdoclose and self._fp is not None:
+            self._fp.close()