internal/imports: fix setting default options
This fixes a nil pointer bug that occurs when opt is nil.
If nil is provide as opt to the internal/imports package, use the
default options settings.
Also check separately that Env is non-nil, as this would also cause
a crash.
Change-Id: I9a43b219b31ba80b7cb8111437f211cb72f1ca18
Reviewed-on: https://go-review.googlesource.com/c/tools/+/189939
Reviewed-by: Heschi Kreinick <heschi@google.com>
diff --git a/internal/imports/imports.go b/internal/imports/imports.go
index acf1461..e466dfb 100644
--- a/internal/imports/imports.go
+++ b/internal/imports/imports.go
@@ -108,17 +108,14 @@
func initialize(filename string, src []byte, opt *Options) ([]byte, error) {
// Use defaults if opt is nil.
if opt == nil {
- opt = &Options{
- Env: &ProcessEnv{
- GOPATH: build.Default.GOPATH,
- GOROOT: build.Default.GOROOT,
- },
- AllErrors: opt.AllErrors,
- Comments: opt.Comments,
- FormatOnly: opt.FormatOnly,
- Fragment: opt.Fragment,
- TabIndent: opt.TabIndent,
- TabWidth: opt.TabWidth,
+ opt = &Options{Comments: true, TabIndent: true, TabWidth: 8}
+ }
+
+ // Set the env if the user has not provided it.
+ if opt.Env == nil {
+ opt.Env = &ProcessEnv{
+ GOPATH: build.Default.GOPATH,
+ GOROOT: build.Default.GOROOT,
}
}