aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2010-06-30 20:34:31 -0700
committerRuss Cox <rsc@golang.org>2010-06-30 20:34:31 -0700
commited39c764b886e2b19d07ccb265f6b2cf3535aa98 (patch)
treec79d78f0c814839107af65bca1ea49a70de6d266
parent040f08184294daee78bea0d193aea945b1835be9 (diff)
downloadgo-ed39c764b886e2b19d07ccb265f6b2cf3535aa98.tar.gz
go-ed39c764b886e2b19d07ccb265f6b2cf3535aa98.zip
gc: do not crash on bad [...]T
Fixes #879. R=ken2 CC=golang-dev https://golang.org/cl/1678048
-rw-r--r--src/cmd/gc/align.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/cmd/gc/align.c b/src/cmd/gc/align.c
index 0d4fa991f3..1b9112d69a 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;