Commit 744b23fe authored by Russ Cox's avatar Russ Cox

cmd/gc: do not crash on struct with _ field

Fixes #3607.

R=ken2
CC=golang-dev
https://golang.org/cl/6296052
parent ee5f59ab
......@@ -2684,7 +2684,7 @@ genhash(Sym *sym, Type *t)
first = T;
for(t1=t->type;; t1=t1->down) {
if(t1 != T && (isblanksym(t1->sym) || algtype1(t1->type, nil) == AMEM)) {
if(first == T)
if(first == T && !isblanksym(t1->sym))
first = t1;
continue;
}
......@@ -2901,7 +2901,7 @@ geneq(Sym *sym, Type *t)
first = T;
for(t1=t->type;; t1=t1->down) {
if(t1 != T && (isblanksym(t1->sym) || algtype1(t1->type, nil) == AMEM)) {
if(first == T)
if(first == T && !isblanksym(t1->sym))
first = t1;
continue;
}
......
// run
// Copyright 2012 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.
// Used to crash generating hash and == functions for struct
// with leading _ field. Issue 3607.
package main
type T struct {
_ int
X interface{}
_ string
Y float64
}
func main() {
m := map[T]int{}
m[T{X: 1, Y: 2}] = 1
m[T{X: 2, Y: 3}] = 2
m[T{X: 1, Y: 2}] = 3 // overwrites first entry
if len(m) != 2 {
println("BUG")
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment