diff options
author | Florian Bruhin <git@the-compiler.org> | 2015-02-26 17:47:07 +0100 |
---|---|---|
committer | Florian Bruhin <git@the-compiler.org> | 2015-03-18 23:13:42 +0100 |
commit | a6f77d5e0b6a3093511982c16f7e7c431a82a137 (patch) | |
tree | 990dfda9f8ff38eb606d3b5ebfe1a1f9fc2e8c26 | |
parent | efb082828b8cf109b8ead41640710e7610ebeb6c (diff) | |
download | qutebrowser-a6f77d5e0b6a3093511982c16f7e7c431a82a137.tar.gz qutebrowser-a6f77d5e0b6a3093511982c16f7e7c431a82a137.zip |
Restore sys.std* in utils.fake_io on exceptions.
-rw-r--r-- | qutebrowser/utils/utils.py | 16 |
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 |