diff options
author | Russ Cox <rsc@golang.org> | 2010-06-30 20:34:31 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2010-06-30 20:34:31 -0700 |
commit | edea112c8d497bc4d08d40b150cbe1ca16f54ed7 (patch) | |
tree | a82219c6b4dbd0c7de2eca9c2646c81b99202af7 /src/cmd/gc/align.c | |
parent | 526f7961f29a8ae0aa3385fce9af5f9b87ce30bd (diff) | |
download | golang-edea112c8d497bc4d08d40b150cbe1ca16f54ed7.tar.gz |
gc: do not crash on bad [...]T
Fixes issue 879.
R=ken2
CC=golang-dev
http://codereview.appspot.com/1678048
Diffstat (limited to 'src/cmd/gc/align.c')
-rw-r--r-- | src/cmd/gc/align.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/cmd/gc/align.c b/src/cmd/gc/align.c index 0d4fa991f..1b9112d69 100644 --- a/src/cmd/gc/align.c +++ b/src/cmd/gc/align.c @@ -225,6 +225,8 @@ dowidth(Type *t) uint64 cap; dowidth(t->type); + if(t->type->width == 0) + fatal("no width for type %T", t->type); if(tptr == TPTR32) cap = ((uint32)-1) / t->type->width; else @@ -275,6 +277,9 @@ dowidth(Type *t) break; } + // catch all for error cases; avoid divide by zero later + if(w == 0) + w = maxround; t->width = w; lineno = lno; |