ho ok thanks for the explanation, I'm not used to working with pointers, well it seems to work either way but maybe I just got lucky
It is very likely a modification would appear to function correctly, because a pointer subtraction (or a comparison of pointers) over the signed/unsigned boundary is extremely rare and can only occur if the program actually uses more than 2GB of memory. However, cannot be ruled out it happens. That means a piece of software could randomly crash on such an OS, which is why Microsoft has chosen an opt-in.
Linux on the other hand, does not offer an opt-in because the 3GB/1GB split is so terribly old that there exist no backwards compat issues. so if you code for Linux you'd better do your pointer calculations unsigned. The compiler warns to help.
well in fact, as I see it, it can't hurt at all in this case
why ? let's say for the sake of an example that game ZETA got modified with the LAA flag
case 1 : the game ZETA never goes beyond 2GB => this modification while completely uneeded won't hurt the well being of the game
case 2 : the game ZETA crosses 2GB and don't have any checks with signed boundary => ok all is fine, and we did well to allow the game to use more than 2GB or else the game would have crashed.
case 3 : the game ZETA crosses 2GB and have a check with signed boundary at some points => once the game is beyond 2GB, it can crash at any moment BUT if the game did not have the LAA flag it would have crashed anyway ...
so as I see it, the worst you can have is that this modification won't improve anything, that is either you crash because you got Out Of Memory
or you crash because the game checked a signed boundary ...
between a crash or a crash, I chose a crash
Joking aside, maybe one type of crash could be preferable over another like maybe one certain type could crash the whole computer rather than just the app.