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