changeset 32810:6675d23da748

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.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 12 Jun 2017 17:24:10 +0200
parents 062eb859d3ee
children ff02bb5979c1
files mercurial/profiling.py
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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: