I had the same problem.
Here's a portion of NI support's response:
_____
This appears to be a constant folding bug. I apologize if this is review,
but constant folding is the process by which the compiler takes the code
and wraps the constants into the compiled machine code itself rather than
allocating storage in memory for them like variables. LabVIEW appears to be
tricked into thinking that it doesn't need to recheck the color control
array input again, since all the inputs it receives in the loop are
constants.
We have seen similar issues on rare occasions with loops and constants in
LabVIEW 8.0, though not this particular instance. I am quite confident you
would see the same behavior with a For Loop in your code. I will add your
information to those existing reports for further investigation by R&D.
This will be a high priority for us to say the least.
In the meantime, I would recommend one of the following workarounds. First,
as you mentioned, you could place the Index control inside the loop, which
will short circuit the constant folding that causes this bug.
Alternatively, you could leave the Index control outside the loop and turn
its wire tunnel on the loop frame into a shift register. Then just wire the
data through from the left shift register node to the right one. That will
force LabVIEW to reread the control value every time.
____________
-James