diff options
author | Ian Lance Taylor <iant@golang.org> | 2016-02-02 13:23:32 -0800 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2016-02-03 03:34:02 +0000 |
commit | 182a9db2dc57ec7da98391f8955d43b2e07fd40e (patch) | |
tree | 5345c18c28248aa1ba889471b029a0f9b7aef1d8 | |
parent | 4760b5a478f9760e82819439843bca92085281d5 (diff) | |
download | go-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.go | 3 | ||||
-rw-r--r-- | src/cmd/vet/testdata/cgo2.go | 9 |
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)) |