From: Russ Cox Date: Fri, 13 Feb 2015 16:54:15 +0000 (-0500) Subject: cmd/gc: avoid writing past end of region array X-Git-Tag: go1.5beta1~2010 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=be4ecd9815e6bea0bdb9e900552ef901ff216baf;p=gostls13.git cmd/gc: avoid writing past end of region array Noticed last week. Just saw a strange build failure in the revised rcmp (called by qsort on region) and this fixed it. Submitting first to avoid finding out which of my pending CLs tickled the problem. Change-Id: I4cafd611e2bf8e813e57ad0025e48bde5ae54359 Reviewed-on: https://go-review.googlesource.com/4830 Reviewed-by: Russ Cox --- diff --git a/src/cmd/gc/reg.c b/src/cmd/gc/reg.c index a60e71cfb7..f4a88505a6 100644 --- a/src/cmd/gc/reg.c +++ b/src/cmd/gc/reg.c @@ -351,21 +351,21 @@ loop2: bit.b[z] = LOAD(r) & ~(r->act.b[z] | addrs.b[z]); while(bany(&bit)) { i = bnum(bit); - rgp->enter = f; - rgp->varno = i; change = 0; paint1(f, i); biclr(&bit, i); if(change <= 0) continue; - rgp->cost = change; - nregion++; if(nregion >= NRGN) { if(debug['R'] && debug['v']) print("too many regions\n"); goto brk; } + rgp->enter = f; + rgp->varno = i; + rgp->cost = change; rgp++; + nregion++; } } brk: