From 8f790fe4598e2b9d26ef4323b5acc7479470a4c4 Mon Sep 17 00:00:00 2001 From: "Andrew M. Kuchling" Date: Tue, 27 Jun 2000 00:50:40 +0000 Subject: [PATCH] Drop back to old version of wrapper(); ESR reports that it broke things, and I lack the time to track down the cause. --- Lib/curses/wrapper.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/Lib/curses/wrapper.py b/Lib/curses/wrapper.py index fd8804d9f2c..cd3008616ff 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