re PR go/65349 (go tool crashes, can't compile go code on 32bit linux systems)
authorIan Lance Taylor <ian@gcc.gnu.org>
Mon, 9 Mar 2015 23:43:16 +0000 (23:43 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Mon, 9 Mar 2015 23:43:16 +0000 (23:43 +0000)
PR go/65349
runtime: Don't crash if explicitly freeing small map.

From-SVN: r221292

libgo/runtime/go-map-index.c

index 499641c5e14ccec39571e543bf87aea505e2ce00..616b00c68c82e876047cffa1a2c855cdd51fa5c5 100644 (file)
@@ -8,6 +8,7 @@
 #include <stdlib.h>
 
 #include "runtime.h"
+#include "malloc.h"
 #include "go-alloc.h"
 #include "go-assert.h"
 #include "map.h"
@@ -63,7 +64,8 @@ __go_map_rehash (struct __go_map *map)
        }
     }
 
-  __go_free (old_buckets);
+  if (old_bucket_count * sizeof (void *) >= TinySize)
+    __go_free (old_buckets);
 
   map->__bucket_count = new_bucket_count;
   map->__buckets = new_buckets;