From 3b39f523e1181499827321cedd8b7370b14ee762 Mon Sep 17 00:00:00 2001 From: Alan Donovan Date: Wed, 22 Mar 2017 12:38:09 -0400 Subject: [PATCH] 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 --- src/cmd/vet/lostcancel.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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) -- 2.48.1