Fixed const correctness issue with C++, and fixed building SDL_memcpy4 with 32-bit gcc.
authorSam Lantinga <slouken@libsdl.org>
Fri, 15 Mar 2013 11:56:28 -0700
changeset 7006 ffcf28627e1c
parent 7005 6c69ad0b184e
child 7007 2381f4d531d1
Fixed const correctness issue with C++, and fixed building SDL_memcpy4 with 32-bit gcc.
include/SDL_stdinc.h
--- a/include/SDL_stdinc.h	Thu Mar 14 23:10:51 2013 -0700
+++ b/include/SDL_stdinc.h	Fri Mar 15 11:56:28 2013 -0700
@@ -414,19 +414,15 @@
 
 SDL_FORCE_INLINE void *SDL_memcpy4(void *dst, const void *src, size_t dwords)
 {
-#if defined(__MACOSX__)
-    /* We can count on memcpy existing on Mac OS X and being well-tuned. */
-    return memcpy(dst, src, dwords * 4);
-#elif defined(__GNUC__) && defined(i386)
+#if defined(__GNUC__) && defined(i386)
     /* !!! FIXME: does this _really_ beat memcpy() on any modern platform? */
     /* !!! FIXME: shouldn't we just force the inputs to ecx/edi/esi instead of this tapdance with outputs? */
-    /* !!! FIXME: amd64? */
     int ecx, edi, esi;
     __asm__ __volatile__ (
         "cld \n\t"
         "rep ; movsl \n\t"
         : "=&c" (ecx), "=&D" (edi), "=&S" (esi)
-        : "0" (SDL_static_cast(unsigned, len)), "1" (dst), "2" (src)
+        : "0" (SDL_static_cast(unsigned, dwords)), "1" (dst), "2" (src)
         : "memory"
     );
     return dst;
@@ -512,7 +508,7 @@
 
 extern DECLSPEC char *SDLCALL SDL_strchr(const char *str, int c);
 #ifdef HAVE_STRCHR
-SDL_FORCE_INLINE char *SDL_strchr_inline(const char *str, int c) { return strchr(str, c); }
+SDL_FORCE_INLINE char *SDL_strchr_inline(const char *str, int c) { return (char*)strchr(str, c); }
 #define SDL_strchr SDL_strchr_inline
 #elif defined(HAVE_INDEX)  /* !!! FIXME: is there anywhere that has this but not strchr? */
 SDL_FORCE_INLINE char *SDL_strchr_inline(const char *str, int c) { return index(str, c); }