From f2852ba618876639b2e85232d65edc9536c7ef7b Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Thu, 17 Feb 2011 16:08:52 -0500 Subject: [PATCH] runtime: descriptive panics for use of nil map R=r, r2 CC=golang-dev https://golang.org/cl/4173060 --- src/pkg/runtime/hashmap.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/pkg/runtime/hashmap.c b/src/pkg/runtime/hashmap.c index f0d5ce90a7..e50cefd9ab 100644 --- a/src/pkg/runtime/hashmap.c +++ b/src/pkg/runtime/hashmap.c @@ -781,6 +781,9 @@ runtime·mapaccess(Hmap *h, byte *ak, byte *av, bool *pres) { byte *res; + if(h == nil) + runtime·panicstring("lookup in nil map"); + if(runtime·gcwaiting) runtime·gosched(); @@ -802,6 +805,9 @@ runtime·mapaccess1(Hmap *h, ...) byte *ak, *av; bool pres; + if(h == nil) + runtime·panicstring("lookup in nil map"); + ak = (byte*)&h + h->ko1; av = (byte*)&h + h->vo1; @@ -827,6 +833,9 @@ runtime·mapaccess2(Hmap *h, ...) { byte *ak, *av, *ap; + if(h == nil) + runtime·panicstring("lookup in nil map"); + ak = (byte*)&h + h->ko1; av = (byte*)&h + h->vo1; ap = (byte*)&h + h->po1; @@ -852,6 +861,9 @@ runtime·mapassign(Hmap *h, byte *ak, byte *av) byte *res; int32 hit; + if(h == nil) + runtime·panicstring("assignment to entry in nil map"); + if(runtime·gcwaiting) runtime·gosched(); @@ -889,6 +901,9 @@ runtime·mapassign1(Hmap *h, ...) { byte *ak, *av; + if(h == nil) + runtime·panicstring("assignment to entry in nil map"); + ak = (byte*)&h + h->ko2; av = (byte*)&h + h->vo2; @@ -902,6 +917,9 @@ runtime·mapassign2(Hmap *h, ...) { byte *ak, *av, *ap; + if(h == nil) + runtime·panicstring("assignment to entry in nil map"); + ak = (byte*)&h + h->ko2; av = (byte*)&h + h->vo2; ap = (byte*)&h + h->po2; -- 2.48.1