diff mbox

libgo patch committed: Permit delete from map with zero length key

Message ID CAOyqgcURA7h+O-iJtsTzkDmtZOfKiYNGE8CXG2==ZOAXKbi2iQ@mail.gmail.com
State New
Headers show

Commit Message

Ian Lance Taylor Dec. 13, 2014, 1:58 a.m. UTC
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 mbox

Patch

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);