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.
--- 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()