diff options
Diffstat (limited to 'src/cmd/8g/gsubr.c')
-rw-r--r-- | src/cmd/8g/gsubr.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/cmd/8g/gsubr.c b/src/cmd/8g/gsubr.c index 3e85b7e30..6890c683e 100644 --- a/src/cmd/8g/gsubr.c +++ b/src/cmd/8g/gsubr.c @@ -1789,6 +1789,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->etype = TUINT; a->offset += Array_nel; if(a->offset >= unmappedzero && a->offset-Array_nel < unmappedzero) @@ -1798,6 +1800,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->etype = TUINT; a->offset += Array_cap; if(a->offset >= unmappedzero && a->offset-Array_nel < unmappedzero) |