瀏覽代碼

Merge pull request #24961 from jstarks/vt_th2_fix

Windows: Restore console mode on set mode failure
Vincent Demeester 9 年之前
父節點
當前提交
bff9a0556f
共有 1 個文件被更改,包括 3 次插入1 次删除
  1. 3 1
      pkg/term/term_windows.go

+ 3 - 1
pkg/term/term_windows.go

@@ -44,9 +44,11 @@ func StdStreams() (stdIn io.ReadCloser, stdOut, stdErr io.Writer) {
 		if err = winterm.SetConsoleMode(fd, mode|enableVirtualTerminalInput); err != nil {
 		if err = winterm.SetConsoleMode(fd, mode|enableVirtualTerminalInput); err != nil {
 			emulateStdin = true
 			emulateStdin = true
 		} else {
 		} else {
-			winterm.SetConsoleMode(fd, mode)
 			vtInputSupported = true
 			vtInputSupported = true
 		}
 		}
+		// Unconditionally set the console mode back even on failure because SetConsoleMode
+		// remembers invalid bits on input handles.
+		winterm.SetConsoleMode(fd, mode)
 	}
 	}
 
 
 	fd = os.Stdout.Fd()
 	fd = os.Stdout.Fd()