This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Debugging setup.exe


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.

cheers,
-Matt Smith



> looks like it's optimized away,
> so try 'volatile int r'!
>
> Bye, Heribert (heribert_dahms@icon-gmbh.de)
>



--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]