go/pointer: fix crash: valueNode(*FreeVar) was allocating 1 node, even for multi-word types.
+ regression test.
Fixes golang/go#8172
Also: return error (not panic) when called with empty input.
LGTM=gri
R=crawshaw, gri
CC=golang-codereviews, jon
https://golang.org/cl/104270043
diff --git a/go/pointer/gen.go b/go/pointer/gen.go
index 8643545..e2b7da9 100644
--- a/go/pointer/gen.go
+++ b/go/pointer/gen.go
@@ -226,7 +226,7 @@
if a.log != nil {
comment = v.String()
}
- id = a.addOneNode(v.Type(), comment, nil)
+ id = a.addNodes(v.Type(), comment)
if obj := a.objectNode(nil, v); obj != 0 {
a.addressOf(v.Type(), id, obj)
}