The logic isn't entirely legitimate, since fixedWinding_t is a
fixed-size type that is *sometimes* treated as a variable-sized type,
but it would require deeper refactoring to make this strictly
conforming. As it is, we just keep the offset computation as a
reasonable way to calculate the allocation size.
Fixes#583.
Fix subtraction of unrelated pointers and integer overflow in FreeStackWinding (both are undefined behavior).
In rare cases "i" would non-deterministically be between 0 and 2 even though the
pointers were in unrelated addresses, which caused a spurious free of one of
the three windings - eventually the real free would happen, be detected as a
double free and an exit(1) would ensue.
Example contents of w and stack->windings that triggered this in a test: 0xa9251c0 0x7f440a924f78
Checking for pointer equality makes the behavior defined and correct: http://port70.net/~nsz/c/c99/n1256.html#6.5.9
made Visual Studio files work in VS2005 Express
fixed a ton of warnings in VS2005 Express
fixed some compile problems on OpenSUSE 11.0
git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/trunk@302 8a3a26a2-13c4-0310-b231-cf6edde360e5