stdinc: Silence clang warning for -Wimplicit-fallthrough.

In a more ideal world, we'd use the appropriate `__attribute__` here, but
it's one thing in a public header that probably shouldn't be there at all, so
this is good enough for now.

Fixes #4307.
This commit is contained in:
Ryan C. Gordon 2021-06-10 13:56:22 -04:00
parent e65a658320
commit 25fc40b0bd
No known key found for this signature in database
GPG Key ID: FA148B892AB48044
1 changed files with 15 additions and 3 deletions

View File

@ -481,16 +481,28 @@ SDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords)
size_t _n = (dwords + 3) / 4; size_t _n = (dwords + 3) / 4;
Uint32 *_p = SDL_static_cast(Uint32 *, dst); Uint32 *_p = SDL_static_cast(Uint32 *, dst);
Uint32 _val = (val); Uint32 _val = (val);
if (dwords == 0) if (dwords == 0) {
return; 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 0: do { *_p++ = _val; /* fallthrough */
case 3: *_p++ = _val; /* fallthrough */ case 3: *_p++ = _val; /* fallthrough */
case 2: *_p++ = _val; /* fallthrough */ case 2: *_p++ = _val; /* fallthrough */
case 1: *_p++ = _val; /* fallthrough */ case 1: *_p++ = _val; /* fallthrough */
} while ( --_n ); } while ( --_n );
} }
#ifdef __clang__
#pragma clang diagnostic pop
#endif
#endif #endif
} }