# HG changeset patch # User Pierre-Yves David # Date 1497281050 -7200 # Node ID 6675d23da74855a350a8b2dc54166d0b345576da # Parent 062eb859d3eec8c601a62c5bc63024b46d9b36e8 profile: properly propagate exception from the sub-context manager Context manager has a mechanism to control extension propagation. It is not used by profiling right now, but making the code correct will help prevent bug in the future. diff -r 062eb859d3ee -r 6675d23da748 mercurial/profiling.py --- a/mercurial/profiling.py Mon Jun 12 17:25:37 2017 +0200 +++ b/mercurial/profiling.py Mon Jun 12 17:24:10 2017 +0200 @@ -214,8 +214,10 @@ raise def __exit__(self, exception_type, exception_value, traceback): + propagate = None if self._profiler is not None: - self._profiler.__exit__(exception_type, exception_value, traceback) + propagate = 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, @@ -223,6 +225,7 @@ val = val.replace('%', '%%') self._ui.log('profile', val) self._closefp() + return propagate def _closefp(self): if self._fpdoclose and self._fp is not None: