From fa7b922e7a8026d800fc9bfb7a345957e77c8ac4 Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Wed, 17 Apr 2019 11:49:02 +0200 Subject: [PATCH] main.go: don't set TTY interface from tty.Open() in case open fails If tty.Open fails the return tty is still nil, but the interface type will be set; meaning in go that `TTY == nil` will always be false. fix #7506 --- main.go | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/main.go b/main.go index 51359f407..9ff290f2f 100644 --- a/main.go +++ b/main.go @@ -186,22 +186,20 @@ func wrappedMain() int { return 1 } } else { - var TTY packer.TTY + basicUi := &packer.BasicUi{ + Reader: os.Stdin, + Writer: os.Stdout, + ErrorWriter: os.Stdout, + } + ui = basicUi if !inPlugin { - var err error - TTY, err = tty.Open() - if err != nil { + if TTY, err := tty.Open(); err != nil { fmt.Fprintf(os.Stderr, "No tty available: %s\n", err) } else { + basicUi.TTY = TTY defer TTY.Close() } } - ui = &packer.BasicUi{ - Reader: os.Stdin, - Writer: os.Stdout, - ErrorWriter: os.Stdout, - TTY: TTY, - } } // Create the CLI meta CommandMeta = &command.Meta{