comparison include/SDL_stdinc.h @ 4137:be12463f31ea SDL-1.2

Date: Sat, 2 Feb 2008 22:08:05 +0100 From: Marcus von Appen To: sdl@lists.libsdl.org Subject: [SDL] [Patch] SDL-1.2 SDL_revcpy() asm patch for the cld flag Hi, as reported through the FreeBSD bug tracking system in SDL 1.2.13 (and in the 1.2 branch, if I see that correctly) the SDL_revcpy() macro sets the direction flag (std), but does not clear it afterwards (cld), which is wrong according to the GCC and SYS V specs. This can cause some weird side effects, which in turn can lead to memory corruption. You can read the full report with a detailed description and test program at http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/120052 Attached is the submitted patch, which fixes the issue. Regards Marcus
author Ryan C. Gordon <icculus@icculus.org>
date Mon, 04 Feb 2008 17:22:56 +0000
parents ad8bdb215737
children a1b03ba2fcd0
comparison
equal deleted inserted replaced
4136:8797fa6e2fb2 4137:be12463f31ea
329 int n = (len); \ 329 int n = (len); \
330 if ( n >= 4 ) { \ 330 if ( n >= 4 ) { \
331 __asm__ __volatile__ ( \ 331 __asm__ __volatile__ ( \
332 "std\n\t" \ 332 "std\n\t" \
333 "rep ; movsl\n\t" \ 333 "rep ; movsl\n\t" \
334 "cld\n\t" \
334 : "=&c" (u0), "=&D" (u1), "=&S" (u2) \ 335 : "=&c" (u0), "=&D" (u1), "=&S" (u2) \
335 : "0" (n >> 2), \ 336 : "0" (n >> 2), \
336 "1" (dstp+(n-4)), "2" (srcp+(n-4)) \ 337 "1" (dstp+(n-4)), "2" (srcp+(n-4)) \
337 : "memory" ); \ 338 : "memory" ); \
338 } \ 339 } \