diff options
author | Andrew M. Kuchling <amk@amk.ca> | 2000-06-27 00:50:40 (GMT) |
---|---|---|
committer | Andrew M. Kuchling <amk@amk.ca> | 2000-06-27 00:50:40 (GMT) |
commit | 8f790fe4598e2b9d26ef4323b5acc7479470a4c4 (patch) | |
tree | c102be8f43e142a1bfe60e40f1a4e74661453bfd /Lib/curses | |
parent | 7fd7e36b084a6ac3b974b2ea0a32413748721774 (diff) | |
download | cpython-8f790fe4598e2b9d26ef4323b5acc7479470a4c4.zip cpython-8f790fe4598e2b9d26ef4323b5acc7479470a4c4.tar.gz cpython-8f790fe4598e2b9d26ef4323b5acc7479470a4c4.tar.bz2 |
Drop back to old version of wrapper(); ESR reports that it broke things,
and I lack the time to track down the cause.
Diffstat (limited to 'Lib/curses')
-rw-r--r-- | Lib/curses/wrapper.py | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/Lib/curses/wrapper.py b/Lib/curses/wrapper.py index fd8804d..cd30086 100644 --- a/Lib/curses/wrapper.py +++ b/Lib/curses/wrapper.py @@ -17,9 +17,11 @@ def wrapper(func, *rest): wrapper(). """ + res = None try: # Initialize curses stdscr=curses.initscr() + # Turn off echoing of keys, and enter cbreak mode, # where no buffering is performed on keyboard input curses.noecho() ; curses.cbreak() @@ -29,11 +31,21 @@ def wrapper(func, *rest): # a special value like curses.KEY_LEFT will be returned stdscr.keypad(1) - return apply(func, (stdscr,) + rest) - - finally: - # Restore the terminal to a sane state on the way out. + res = apply(func, (stdscr,) + rest) + except: + # In the event of an error, restore the terminal + # to a sane state. stdscr.keypad(0) curses.echo() ; curses.nocbreak() curses.endwin() + + # Pass the exception upwards + (exc_type, exc_value, exc_traceback) = sys.exc_info() + raise exc_type, exc_value, exc_traceback + else: + # Set everything back to normal + stdscr.keypad(0) + curses.echo() ; curses.nocbreak() + curses.endwin() # Terminate curses + return res |