From 90dfbd4d0a94f639df519aeb4767ffd84772b0fc Mon Sep 17 00:00:00 2001 From: Ken Thompson Date: Tue, 29 Jun 2010 12:48:24 -0700 Subject: code gen bug in len(nil) and cap(nil) fixes issue 892 R=rsc CC=golang-dev http://codereview.appspot.com/1745042 --- src/cmd/5g/gsubr.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/cmd/5g/gsubr.c') diff --git a/src/cmd/5g/gsubr.c b/src/cmd/5g/gsubr.c index ea6ab1d70..700602c35 100644 --- a/src/cmd/5g/gsubr.c +++ b/src/cmd/5g/gsubr.c @@ -1137,6 +1137,8 @@ naddr(Node *n, Addr *a, int canemitcode) case OLEN: // len of string or slice naddr(n->left, a, canemitcode); + if(a->type == D_CONST && a->offset == 0) + break; // len(nil) a->offset += Array_nel; if(a->offset >= unmappedzero && a->offset-Array_nel < unmappedzero) checkoffset(a, canemitcode); @@ -1145,6 +1147,8 @@ naddr(Node *n, Addr *a, int canemitcode) case OCAP: // cap of string or slice naddr(n->left, a, canemitcode); + if(a->type == D_CONST && a->offset == 0) + break; // cap(nil) a->offset += Array_cap; if(a->offset >= unmappedzero && a->offset-Array_cap < unmappedzero) checkoffset(a, canemitcode); -- cgit v1.2.3