# HG changeset patch # User glx # Date 1160176624 0 # Node ID eec35189bfebb579649d6064076c0126e1c53943 # Parent 4cc941b61b07ccbc126c688b269ce0ca067b706f (svn r6674) -Fix r6631: two loops had incorrect behaviour (out of bound access in widget arrays) diff -r 4cc941b61b07 -r eec35189bfeb graph_gui.c --- a/graph_gui.c Fri Oct 06 22:08:37 2006 +0000 +++ b/graph_gui.c Fri Oct 06 23:17:04 2006 +0000 @@ -224,10 +224,9 @@ switch (e->event) { case WE_CREATE: { - uint include_bits = ~_legend_excludebits; int i; - for (i = 0; include_bits != 0; i++, include_bits >>= 1) { - if (HASBIT(include_bits, 0)) LowerWindowWidget(w, i + 3); + for (i = 0; w->widget[i + 3].type != WWT_LAST; i++) { + if (!HASBIT(_legend_excludebits, i)) LowerWindowWidget(w, i + 3); } break; } @@ -706,10 +705,9 @@ { switch (e->event) { case WE_CREATE: { - uint to_select = ~_legend_cargobits; int i; - for (i = 0; to_select != 0; i++, to_select >>= 1) { - if (HASBIT(to_select, 0)) LowerWindowWidget(w, i + 3); + for (i = 0; w->widget[i + 3].type != WWT_LAST; i++) { + if (!HASBIT(_legend_cargobits, i)) LowerWindowWidget(w, i + 3); } break; }