Lenard Lindstrom wrote: > I believe I found the bug. And it was already fixed for SDL 1.3 (I cannot > confirm it is also fixed for 1.2.13 in SVN since the site is down.) There > should be a licensing requirement to do assembly level programming :-). The > optimized reverse blit uses an i386 string move instruction. The direction > of the copy is controlled by a register flag. A cleared flag causes a > forward copy, the data pointers are incremented. A set flag causes a reverse > copy, decrementing data pointers. The flag was set by the SDL copy code, but > not cleared afterwards. And the flag doesn't reset itself apparently. So the > set flag sat there like an armed bomb until the next string copy instruction > was executed.
This sounds related to the ABI "correction" in GCC 4.3 that broke a lot more than SDL: http://lwn.net/Articles/272048/ If it is, the SDL code would have worked with older compilers. douglas