From c5ca520470b9662e4c2864ab0fcfeb634cefa798 Mon Sep 17 00:00:00 2001 From: Eli Young Date: Tue, 23 Aug 2022 14:04:30 -0700 Subject: [PATCH] Avoid modifying saved terminal state --- internal/term/raw.go | 2 +- internal/term/term.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/term/raw.go b/internal/term/raw.go index 7aa3ed8d..e2a4a7b8 100644 --- a/internal/term/raw.go +++ b/internal/term/raw.go @@ -25,5 +25,5 @@ func SetRaw(fd int) error { n.Cc[syscall.VMIN] = 1 n.Cc[syscall.VTIME] = 0 - return termios.Tcsetattr(uintptr(fd), termios.TCSANOW, (*unix.Termios)(n)) + return termios.Tcsetattr(uintptr(fd), termios.TCSANOW, (*unix.Termios)(&n)) } diff --git a/internal/term/term.go b/internal/term/term.go index 3f3a53c0..9c8e2e6b 100644 --- a/internal/term/term.go +++ b/internal/term/term.go @@ -15,13 +15,13 @@ var ( saveTermiosOnce sync.Once ) -func getOriginalTermios(fd int) (*unix.Termios, error) { +func getOriginalTermios(fd int) (unix.Termios, error) { var err error saveTermiosOnce.Do(func() { saveTermiosFD = fd saveTermios, err = termios.Tcgetattr(uintptr(fd)) }) - return saveTermios, err + return *saveTermios, err } // Restore terminal's mode. @@ -30,5 +30,5 @@ func Restore() error { if err != nil { return err } - return termios.Tcsetattr(uintptr(saveTermiosFD), termios.TCSANOW, o) + return termios.Tcsetattr(uintptr(saveTermiosFD), termios.TCSANOW, &o) }