Mercurial > sdl-ios-xcode
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 } \ |