A map with a zero length key is useless, but valid. gccgo was incorrectly crashing when deleting an entry from such a map. This patch by Chris Manghane fixes the problem. Bootstrapped and ran Go testsuite on x86_64-unknown-linux-gnu. Committed to mainline.
Ian
diff -r 28f37e5c57fe libgo/runtime/go-map-delete.c --- a/libgo/runtime/go-map-delete.c Fri Dec 12 17:40:24 2014 -0800 +++ b/libgo/runtime/go-map-delete.c Fri Dec 12 17:55:34 2014 -0800 @@ -35,7 +35,10 @@ key_descriptor = descriptor->__map_descriptor->__key_type; key_offset = descriptor->__key_offset; key_size = key_descriptor->__size; - __go_assert (key_size != 0 && key_size != -1UL); + if (key_size == 0) + return; + + __go_assert (key_size != -1UL); equalfn = key_descriptor->__equalfn; key_hash = key_descriptor->__hashfn (key, key_size);