diff --git a/include/SDL_stdinc.h b/include/SDL_stdinc.h index d286e68a9..0cbbb436b 100644 --- a/include/SDL_stdinc.h +++ b/include/SDL_stdinc.h @@ -481,16 +481,28 @@ SDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords) size_t _n = (dwords + 3) / 4; Uint32 *_p = SDL_static_cast(Uint32 *, dst); Uint32 _val = (val); - if (dwords == 0) + if (dwords == 0) { return; - switch (dwords % 4) - { + } + + /* !!! FIXME: there are better ways to do this, but this is just to clean this up for now. */ + #ifdef __clang__ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wimplicit-fallthrough" + #endif + + switch (dwords % 4) { case 0: do { *_p++ = _val; /* fallthrough */ case 3: *_p++ = _val; /* fallthrough */ case 2: *_p++ = _val; /* fallthrough */ case 1: *_p++ = _val; /* fallthrough */ } while ( --_n ); } + + #ifdef __clang__ + #pragma clang diagnostic pop + #endif + #endif }