diff --git a/src/runtime/hashmap.c b/src/runtime/hashmap.c index bb8dd7ba980..b3022ca1494 100644 --- a/src/runtime/hashmap.c +++ b/src/runtime/hashmap.c @@ -870,6 +870,10 @@ sys·mapassign2(Hmap *h, ...) void sys·mapiterinit(Hmap *h, struct hash_iter *it) { + if(h == nil) { + it->data = nil; + return; + } hash_iter_init(h, it); it->data = hash_next(it); if(debug) { diff --git a/test/map.go b/test/map.go index 085502bf521..95da48c75d2 100644 --- a/test/map.go +++ b/test/map.go @@ -487,4 +487,10 @@ func main() { fmt.Printf("update mipM[%d][%d] = %i\n", i, i, mipM[i][i]); } } + + // test range on nil map + var mnil map[string] int; + for x, y := range mnil { + panic("range mnil"); + } }