x/tools/refactor/rename: fix nil pointer dereference.
Fix a nil pointer dereference by checking the error returned by
conf.Load.
Bug was reported on Reddit:
https://www.reddit.com/r/golang/comments/5vo0fb/
Change-Id: I2ad6f03922b772f03e282a0af6eea24f8de9cef8
Reviewed-on: https://go-review.googlesource.com/37432
Reviewed-by: Alan Donovan <adonovan@google.com>
diff --git a/refactor/rename/mvpkg_test.go b/refactor/rename/mvpkg_test.go
index 674fe6c..7f5b135 100644
--- a/refactor/rename/mvpkg_test.go
+++ b/refactor/rename/mvpkg_test.go
@@ -72,6 +72,14 @@
"support move destinations whose base names are not valid " +
"go identifiers",
},
+ {
+ ctxt: fakeContext(map[string][]string{
+ "foo": {``},
+ "bar": {`package bar`},
+ }),
+ from: "foo", to: "bar",
+ want: `no initial packages were loaded`,
+ },
}
for _, test := range tests {
diff --git a/refactor/rename/rename.go b/refactor/rename/rename.go
index 127647b..6d84024 100644
--- a/refactor/rename/rename.go
+++ b/refactor/rename/rename.go
@@ -392,6 +392,9 @@
// It would be nice if the loader API permitted "AllowErrors: soft".
conf.AllowErrors = true
prog, err := conf.Load()
+ if err != nil {
+ return nil, err
+ }
var errpkgs []string
// Report hard errors in indirectly imported packages.
for _, info := range prog.AllPackages {
@@ -408,7 +411,7 @@
return nil, fmt.Errorf("couldn't load packages due to errors: %s%s",
strings.Join(errpkgs, ", "), more)
}
- return prog, err
+ return prog, nil
}
func containsHardErrors(errors []error) bool {