[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Another blitting surface to itself crash



to confirm, looks like it is fixed in SDL 1.2 SVN:
http://svn.libsdl.org/branches/SDL-1.2/include/SDL_stdinc.h

somebody added a cld after the rep movsl

however it is definitely _not_ fixed in 1.2.13 though (you can see from the source archive: http://libsdl.org/release/SDL-1.2.13.zip ) , meaning it won't be fixed until SDL 1.2.14 is released..

On Tue, Aug 19, 2008 at 2:24 PM, Lenard Lindstrom <len-l@xxxxxxxxx> 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.

Lenard



Lenard Lindstrom wrote:

That seems to be it. Try out the modified SDL.dll for Pythons 2.4. and 2.5:

http://www3.telus.net/len_l/pygame/SDL-self-blit.zip

md5sum:
59a283f9383d6b5512c236d98e39c97b *SDL-self-blit.zip

Lenard


Lenard Lindstrom wrote:

I will. But it will be hand-customized.

Lenard


Brian Fisher wrote:
Hey Lenard,
Can you build SDL with mingw in a way that the inlined assembly won't be used? (i.e. so that it uses the same source that VisualC does to build)





--
Lenard Lindstrom
<len-l@xxxxxxxxx>