diff --git a/internal/term/raw.go b/internal/term/raw.go index 7aa3ed8..e2a4a7b 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 3f3a53c..8b9b966 100644 --- a/internal/term/term.go +++ b/internal/term/term.go @@ -10,16 +10,18 @@ import ( ) var ( - saveTermios *unix.Termios + saveTermios unix.Termios saveTermiosFD int 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)) + var saveTermiosPtr *unix.Termios + saveTermiosPtr, err = termios.Tcgetattr(uintptr(fd)) + saveTermios = *saveTermiosPtr }) return saveTermios, err } @@ -30,5 +32,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) }