Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6c611fa

Browse files
committed
Patch #581705: Catch OSError, termios.error in spawn. 2.2 bugfix candidate.
1 parent d694c1f commit 6c611fa

1 file changed

Lines changed: 9 additions & 4 deletions

File tree

Lib/pty.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,9 +154,14 @@ def spawn(argv, master_read=_read, stdin_read=_read):
154154
pid, master_fd = fork()
155155
if pid == CHILD:
156156
apply(os.execlp, (argv[0],) + argv)
157-
mode = tty.tcgetattr(STDIN_FILENO)
158-
tty.setraw(STDIN_FILENO)
157+
try:
158+
mode = tty.tcgetattr(STDIN_FILENO)
159+
tty.setraw(STDIN_FILENO)
160+
restore = 1
161+
except tty.error: # This is the same as termios.error
162+
restore = 0
159163
try:
160164
_copy(master_fd, master_read, stdin_read)
161-
except IOError:
162-
tty.tcsetattr(STDIN_FILENO, tty.TCSAFLUSH, mode)
165+
except (IOError, OSError):
166+
if restore:
167+
tty.tcsetattr(STDIN_FILENO, tty.TCSAFLUSH, mode)

0 commit comments

Comments
 (0)