Author: Philip Jenvey <pjen...@underboss.org> Branch: py3k Changeset: r84555:7737b9ffdd0b Date: 2016-05-21 15:01 -0700 http://bitbucket.org/pypy/pypy/changeset/7737b9ffdd0b/
Log: fix test_context_with_suppressed, always reset the last exception after __exit__, even if it raises diff --git a/pypy/interpreter/pyopcode.py b/pypy/interpreter/pyopcode.py --- a/pypy/interpreter/pyopcode.py +++ b/pypy/interpreter/pyopcode.py @@ -1138,12 +1138,14 @@ old_last_exception = self.last_exception self.last_exception = operr w_traceback = self.space.wrap(operr.get_traceback()) - w_suppress = self.call_contextmanager_exit_function( - w_exitfunc, - operr.w_type, - operr.get_w_value(self.space), - w_traceback) - self.last_exception = old_last_exception + try: + w_suppress = self.call_contextmanager_exit_function( + w_exitfunc, + operr.w_type, + operr.get_w_value(self.space), + w_traceback) + finally: + self.last_exception = old_last_exception if self.space.is_true(w_suppress): # __exit__() returned True -> Swallow the exception. self.settopvalue(self.space.w_None) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit