On Tue, Mar 27, 2001 at 03:47:14PM -0600, Matthew Smith wrote:
>Changing 'int r' to 'volatile int r' seemed like a good idea, so I tried
>that, and it works well. Now however, I've run into some stranger behavior
>still. Take a look at this code snippet:
>
> r = (y + ROW_MARGIN/2) / row_height;
>
> if (r < 0 || r >= npackages)
> return 0;
>
> int p = package_indexes[r];
>
> if (x >= headers[NEW_COL].x - HMARGIN/2 && x <= headers[NEW_COL+1].x -
>HMARGIN/2)
> {
> ...
>
>
>Ok, I step through and 'r' is set to a reasonable number. 'p' is then set
>to 0, which seems reasonable enough as well. We hit the 'if' conditional,
>and get this....execution then goes BACKWARDS and executes the 'int p =
>package_indexes[r];' line again! At that point, p is set to some gigantic
>negative number, so when we use it as an array index a short time later,
>everything blows up. Is this related to the optimizer too? Seems odd.
DJ has already indicated that what you are seeing is an artifact of
optimization. Build setup.exe without the -O2 if you are having problems.
cgf
--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple