# HG changeset patch # User Pierre-Yves David <pierre-yves.david@octobus.net> # Date 2017-06-12 15:25:37 # Node ID 062eb859d3eec8c601a62c5bc63024b46d9b36e8 # Parent 336700745a5c08e63c454166db9c05a4d0dfb529 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. diff --git a/mercurial/profiling.py b/mercurial/profiling.py --- a/mercurial/profiling.py +++ b/mercurial/profiling.py @@ -214,15 +214,14 @@ class profile(object): 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):