From be4ecd9815e6bea0bdb9e900552ef901ff216baf Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Fri, 13 Feb 2015 11:54:15 -0500 Subject: [PATCH] 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 --- src/cmd/gc/reg.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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: -- 2.48.1