Fixed bug 944
authorSam Lantinga
Tue, 13 Apr 2010 22:01:14 -0700
changeset 443277ebcd41b577
parent 4429 faa9fc8e7f67
child 4433 9fa97c6b0014
Fixed bug 944

Tatu Kilappa 2010-02-11 12:13:20 PST

When compiling with -Wconversion, gcc complains about a cast in SDL_endian.h
that might change the result as we are casting from an int into an Uint16. This
is of course not visible unless we are on a non-x86 platform where the
assembler is not available.

While it's not really an error, the warning is really annoying. To fix, change
SDL_endian.h line 87 to:

return(Uint16)((x<<8)|(x>>8));

Thank you.
include/SDL_endian.h
     1.1 --- a/include/SDL_endian.h	Thu Mar 25 01:08:26 2010 -0700
     1.2 +++ b/include/SDL_endian.h	Tue Apr 13 22:01:14 2010 -0700
     1.3 @@ -103,7 +103,7 @@
     1.4  static __inline__ Uint16
     1.5  SDL_Swap16(Uint16 x)
     1.6  {
     1.7 -    return ((x << 8) | (x >> 8));
     1.8 +    return (Uint16)((x << 8) | (x >> 8));
     1.9  }
    1.10  #endif
    1.11  
    1.12 @@ -143,8 +143,8 @@
    1.13  static __inline__ Uint32
    1.14  SDL_Swap32(Uint32 x)
    1.15  {
    1.16 -    return ((x << 24) | ((x << 8) & 0x00FF0000) | ((x >> 8) & 0x0000FF00) |
    1.17 -            (x >> 24));
    1.18 +    return (Uint32)((x << 24) | ((x << 8) & 0x00FF0000) |
    1.19 +                    ((x >> 8) & 0x0000FF00) | (x >> 24));
    1.20  }
    1.21  #endif
    1.22