From: Alan Donovan Date: Wed, 22 Mar 2017 16:38:09 +0000 (-0400) Subject: cmd/vet: -lostcancel: fix crash in ill-typed code X-Git-Tag: go1.9beta1~1042 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=3b39f523e1181499827321cedd8b7370b14ee762;p=gostls13.git cmd/vet: -lostcancel: fix crash in ill-typed code Fixes golang/go#19656 Change-Id: Ied20d3f25b6e147cc693a1dd1aeb9480adc6687e Reviewed-on: https://go-review.googlesource.com/38405 Reviewed-by: Josh Bleecher Snyder Run-TryBot: Josh Bleecher Snyder --- diff --git a/src/cmd/vet/lostcancel.go b/src/cmd/vet/lostcancel.go index d049a3e888..ee0342035f 100644 --- a/src/cmd/vet/lostcancel.go +++ b/src/cmd/vet/lostcancel.go @@ -104,7 +104,11 @@ func checkLostCancel(f *File, node ast.Node) { var sig *types.Signature switch node := node.(type) { case *ast.FuncDecl: - sig, _ = f.pkg.defs[node.Name].Type().(*types.Signature) + obj := f.pkg.defs[node.Name] + if obj == nil { + return // type error (e.g. duplicate function declaration) + } + sig, _ = obj.Type().(*types.Signature) g = cfg.New(node.Body, mayReturn) case *ast.FuncLit: sig, _ = f.pkg.types[node.Type].Type.(*types.Signature)