diff options
author | Guido van Rossum <guido@python.org> | 2006-03-01 17:10:01 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2006-03-01 17:10:01 (GMT) |
commit | a9f068726fb4cf3693bd70b4b98bd0deaba45443 (patch) | |
tree | 1f34c66af4697944ee39965dd03813fb3b28a4ce /Lib/contextlib.py | |
parent | 6db0e00d571781806cb850088365730fa64e80a6 (diff) | |
download | cpython-a9f068726fb4cf3693bd70b4b98bd0deaba45443.zip cpython-a9f068726fb4cf3693bd70b4b98bd0deaba45443.tar.gz cpython-a9f068726fb4cf3693bd70b4b98bd0deaba45443.tar.bz2 |
Fix a bug in nested() - if one of the sub-context-managers swallows the
exception, it should not be propagated up. With unit tests.
Diffstat (limited to 'Lib/contextlib.py')
-rw-r--r-- | Lib/contextlib.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/Lib/contextlib.py b/Lib/contextlib.py index 33d83a6..33c302d 100644 --- a/Lib/contextlib.py +++ b/Lib/contextlib.py @@ -91,7 +91,6 @@ def nested(*contexts): """ exits = [] vars = [] - exc = (None, None, None) try: try: for context in contexts: @@ -103,6 +102,8 @@ def nested(*contexts): yield vars except: exc = sys.exc_info() + else: + exc = (None, None, None) finally: while exits: exit = exits.pop() @@ -110,6 +111,8 @@ def nested(*contexts): exit(*exc) except: exc = sys.exc_info() + else: + exc = (None, None, None) if exc != (None, None, None): raise |