profile: close 'fp' in all cases
authorPierre-Yves David <pierre-yves.david@octobus.net>
Mon, 12 Jun 2017 17:25:37 +0200
changeset 32809 062eb859d3ee
parent 32808 336700745a5c
child 32810 6675d23da748
profile: close 'fp' in all cases There are no way for this to happen today, but better be safe than sorry, no one know how the code will evolve. We now make sure the file pointer is closed even is profiler is None.
mercurial/profiling.py
--- a/mercurial/profiling.py	Mon Jun 12 17:21:41 2017 +0200
+++ b/mercurial/profiling.py	Mon Jun 12 17:25:37 2017 +0200
@@ -214,15 +214,14 @@
             raise
 
     def __exit__(self, exception_type, exception_value, traceback):
-        if self._profiler is None:
-            return
-        self._profiler.__exit__(exception_type, exception_value, traceback)
-        if self._output == 'blackbox':
-            val = 'Profile:\n%s' % self._fp.getvalue()
-            # ui.log treats the input as a format string,
-            # so we need to escape any % signs.
-            val = val.replace('%', '%%')
-            self._ui.log('profile', val)
+        if self._profiler is not None:
+            self._profiler.__exit__(exception_type, exception_value, traceback)
+            if self._output == 'blackbox':
+                val = 'Profile:\n%s' % self._fp.getvalue()
+                # ui.log treats the input as a format string,
+                # so we need to escape any % signs.
+                val = val.replace('%', '%%')
+                self._ui.log('profile', val)
         self._closefp()
 
     def _closefp(self):