aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2016-02-02 13:23:32 -0800
committerRuss Cox <rsc@golang.org>2016-02-03 03:34:02 +0000
commit182a9db2dc57ec7da98391f8955d43b2e07fd40e (patch)
tree5345c18c28248aa1ba889471b029a0f9b7aef1d8
parent4760b5a478f9760e82819439843bca92085281d5 (diff)
downloadgo-182a9db2dc57ec7da98391f8955d43b2e07fd40e.tar.gz
go-182a9db2dc57ec7da98391f8955d43b2e07fd40e.zip
cmd/vet: don't crash in cgo checker if type is unknown
Fixes #14201. Change-Id: Ib61f8c00cae72463f59b90ae199fbdc1e7422a79 Reviewed-on: https://go-review.googlesource.com/19174 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
-rw-r--r--src/cmd/vet/cgo.go3
-rw-r--r--src/cmd/vet/testdata/cgo2.go9
2 files changed, 12 insertions, 0 deletions
diff --git a/src/cmd/vet/cgo.go b/src/cmd/vet/cgo.go
index 8807952b48..1985a86fe0 100644
--- a/src/cmd/vet/cgo.go
+++ b/src/cmd/vet/cgo.go
@@ -72,6 +72,9 @@ func cgoBaseType(f *File, arg ast.Expr) types.Type {
}
// Here arg is *f(v).
t := f.pkg.types[call.Fun].Type
+ if t == nil {
+ break
+ }
ptr, ok := t.Underlying().(*types.Pointer)
if !ok {
break
diff --git a/src/cmd/vet/testdata/cgo2.go b/src/cmd/vet/testdata/cgo2.go
new file mode 100644
index 0000000000..276aea9619
--- /dev/null
+++ b/src/cmd/vet/testdata/cgo2.go
@@ -0,0 +1,9 @@
+// Copyright 2016 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Test the cgo checker on a file that doesn't use cgo.
+
+package testdata
+
+var _ = C.f(*p(**p))