summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <git@the-compiler.org>2015-02-26 17:47:07 +0100
committerFlorian Bruhin <git@the-compiler.org>2015-03-18 23:13:42 +0100
commita6f77d5e0b6a3093511982c16f7e7c431a82a137 (patch)
tree990dfda9f8ff38eb606d3b5ebfe1a1f9fc2e8c26
parentefb082828b8cf109b8ead41640710e7610ebeb6c (diff)
downloadqutebrowser-a6f77d5e0b6a3093511982c16f7e7c431a82a137.tar.gz
qutebrowser-a6f77d5e0b6a3093511982c16f7e7c431a82a137.zip
Restore sys.std* in utils.fake_io on exceptions.
-rw-r--r--qutebrowser/utils/utils.py16
1 files changed, 9 insertions, 7 deletions
diff --git a/qutebrowser/utils/utils.py b/qutebrowser/utils/utils.py
index 3d264a335..630f11c13 100644
--- a/qutebrowser/utils/utils.py
+++ b/qutebrowser/utils/utils.py
@@ -388,13 +388,15 @@ def fake_io(write_func):
fake_stdout = FakeIOStream(write_func)
sys.stderr = fake_stderr
sys.stdout = fake_stdout
- yield
- # If the code we did run did change sys.stdout/sys.stderr, we leave it
- # unchanged. Otherwise, we reset it.
- if sys.stdout is fake_stdout:
- sys.stdout = old_stdout
- if sys.stderr is fake_stderr:
- sys.stderr = old_stderr
+ try:
+ yield
+ finally:
+ # If the code we did run did change sys.stdout/sys.stderr, we leave it
+ # unchanged. Otherwise, we reset it.
+ if sys.stdout is fake_stdout:
+ sys.stdout = old_stdout
+ if sys.stderr is fake_stderr:
+ sys.stderr = old_stderr
@contextlib.contextmanager