Patch #581705: Catch OSError, termios.error in spawn. 2.2 bugfix candidate.
This commit is contained in:
parent
d694c1faf9
commit
6c611fae53
13
Lib/pty.py
13
Lib/pty.py
|
@ -154,9 +154,14 @@ def spawn(argv, master_read=_read, stdin_read=_read):
|
||||||
pid, master_fd = fork()
|
pid, master_fd = fork()
|
||||||
if pid == CHILD:
|
if pid == CHILD:
|
||||||
apply(os.execlp, (argv[0],) + argv)
|
apply(os.execlp, (argv[0],) + argv)
|
||||||
mode = tty.tcgetattr(STDIN_FILENO)
|
try:
|
||||||
tty.setraw(STDIN_FILENO)
|
mode = tty.tcgetattr(STDIN_FILENO)
|
||||||
|
tty.setraw(STDIN_FILENO)
|
||||||
|
restore = 1
|
||||||
|
except tty.error: # This is the same as termios.error
|
||||||
|
restore = 0
|
||||||
try:
|
try:
|
||||||
_copy(master_fd, master_read, stdin_read)
|
_copy(master_fd, master_read, stdin_read)
|
||||||
except IOError:
|
except (IOError, OSError):
|
||||||
tty.tcsetattr(STDIN_FILENO, tty.TCSAFLUSH, mode)
|
if restore:
|
||||||
|
tty.tcsetattr(STDIN_FILENO, tty.TCSAFLUSH, mode)
|
||||||
|
|
Loading…
Reference in New Issue