diff Lib/curses/wrapper.py @ 13027:bf2ee8567201 legacy-trunk

Drop back to old version of wrapper(); ESR reports that it broke things, and I lack the time to track down the cause.
author Andrew M. Kuchling <amk@amk.ca>
date Tue, 27 Jun 2000 00:50:40 +0000
parents c8e13535fdc3
children 2ba76e315016
line wrap: on
line diff
--- a/Lib/curses/wrapper.py	Tue Jun 27 00:37:25 2000 +0000
+++ b/Lib/curses/wrapper.py	Tue Jun 27 00:50:40 2000 +0000
@@ -17,9 +17,11 @@
     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 @@
 	# 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