diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c index fbe1f18e67..2412ea14d4 100644 --- a/src/test/SDL_test_common.c +++ b/src/test/SDL_test_common.c @@ -840,7 +840,7 @@ static void SDLTest_PrintWindowFlag(char *text, size_t maxlen, SDL_WindowFlags f SDL_snprintfcat(text, maxlen, "TRANSPARENT"); break; default: - SDL_snprintfcat(text, maxlen, "0x%8.8x", flag); + SDL_snprintfcat(text, maxlen, "0x%16.16" SDL_PRIx64, flag); break; } } diff --git a/src/thread/windows/SDL_sysmutex.c b/src/thread/windows/SDL_sysmutex.c index 6b1083ef4a..6ad755d7fa 100644 --- a/src/thread/windows/SDL_sysmutex.c +++ b/src/thread/windows/SDL_sysmutex.c @@ -146,7 +146,8 @@ static SDL_Mutex *SDL_CreateMutex_cs(void) #ifdef SDL_PLATFORM_WINRT InitializeCriticalSectionEx(&mutex->cs, 2000, 0); #else - InitializeCriticalSectionAndSpinCount(&mutex->cs, 2000); + // This function always succeeds + (void)InitializeCriticalSectionAndSpinCount(&mutex->cs, 2000); #endif } return (SDL_Mutex *)mutex; diff --git a/src/video/SDL_blit_0.c b/src/video/SDL_blit_0.c index ab06e41544..5ea34aeae4 100644 --- a/src/video/SDL_blit_0.c +++ b/src/video/SDL_blit_0.c @@ -928,10 +928,16 @@ SDL_BlitFunc SDL_CalculateBlit0(SDL_Surface *surface) if (SDL_PIXELTYPE(surface->format) == SDL_PIXELTYPE_INDEX1) { switch (surface->internal->map.info.flags & ~SDL_COPY_RLE_MASK) { case 0: - return bitmap_blit_1b[which]; + if (which < SDL_arraysize(bitmap_blit_1b)) { + return bitmap_blit_1b[which]; + } + break; case SDL_COPY_COLORKEY: - return colorkey_blit_1b[which]; + if (which < SDL_arraysize(colorkey_blit_1b)) { + return colorkey_blit_1b[which]; + } + break; case SDL_COPY_MODULATE_ALPHA | SDL_COPY_BLEND: return which >= 2 ? Blit1btoNAlpha : (SDL_BlitFunc)NULL; @@ -945,10 +951,16 @@ SDL_BlitFunc SDL_CalculateBlit0(SDL_Surface *surface) if (SDL_PIXELTYPE(surface->format) == SDL_PIXELTYPE_INDEX2) { switch (surface->internal->map.info.flags & ~SDL_COPY_RLE_MASK) { case 0: - return bitmap_blit_2b[which]; + if (which < SDL_arraysize(bitmap_blit_2b)) { + return bitmap_blit_2b[which]; + } + break; case SDL_COPY_COLORKEY: - return colorkey_blit_2b[which]; + if (which < SDL_arraysize(colorkey_blit_2b)) { + return colorkey_blit_2b[which]; + } + break; case SDL_COPY_MODULATE_ALPHA | SDL_COPY_BLEND: return which >= 2 ? Blit2btoNAlpha : (SDL_BlitFunc)NULL; @@ -962,10 +974,16 @@ SDL_BlitFunc SDL_CalculateBlit0(SDL_Surface *surface) if (SDL_PIXELTYPE(surface->format) == SDL_PIXELTYPE_INDEX4) { switch (surface->internal->map.info.flags & ~SDL_COPY_RLE_MASK) { case 0: - return bitmap_blit_4b[which]; + if (which < SDL_arraysize(bitmap_blit_4b)) { + return bitmap_blit_4b[which]; + } + break; case SDL_COPY_COLORKEY: - return colorkey_blit_4b[which]; + if (which < SDL_arraysize(colorkey_blit_4b)) { + return colorkey_blit_4b[which]; + } + break; case SDL_COPY_MODULATE_ALPHA | SDL_COPY_BLEND: return which >= 2 ? Blit4btoNAlpha : (SDL_BlitFunc)NULL; diff --git a/src/video/SDL_blit_1.c b/src/video/SDL_blit_1.c index 0c7cdc099a..2c8acbdb1f 100644 --- a/src/video/SDL_blit_1.c +++ b/src/video/SDL_blit_1.c @@ -526,10 +526,16 @@ SDL_BlitFunc SDL_CalculateBlit1(SDL_Surface *surface) switch (surface->internal->map.info.flags & ~SDL_COPY_RLE_MASK) { case 0: - return one_blit[which]; + if (which < SDL_arraysize(one_blit)) { + return one_blit[which]; + } + break; case SDL_COPY_COLORKEY: - return one_blitkey[which]; + if (which < SDL_arraysize(one_blitkey)) { + return one_blitkey[which]; + } + break; case SDL_COPY_COLORKEY | SDL_COPY_BLEND: /* this is not super-robust but handles a specific case we found sdl12-compat. */ return (surface->internal->map.info.a == 255) ? one_blitkey[which] : diff --git a/test/checkkeys.c b/test/checkkeys.c index 36aa88d439..3596605b64 100644 --- a/test/checkkeys.c +++ b/test/checkkeys.c @@ -561,10 +561,12 @@ int main(int argc, char *argv[]) #endif done: - for (i = 0; i < state->num_windows; ++i) { - SDLTest_TextWindowDestroy(windowstates[i].textwindow); + if (windowstates) { + for (i = 0; i < state->num_windows; ++i) { + SDLTest_TextWindowDestroy(windowstates[i].textwindow); + } + SDL_free(windowstates); } - SDL_free(windowstates); SDLTest_CleanupTextDrawing(); SDLTest_CommonQuit(state); return 0; diff --git a/test/testautomation_stdlib.c b/test/testautomation_stdlib.c index 701b8f6413..c489c58463 100644 --- a/test/testautomation_stdlib.c +++ b/test/testautomation_stdlib.c @@ -378,7 +378,7 @@ static int stdlib_swprintf(void *arg) const wchar_t *expected; size_t size; - result = SDL_swprintf(text, sizeof(text), L"%s", "foo"); + result = SDL_swprintf(text, SDL_arraysize(text), L"%s", "foo"); expected = L"foo"; SDLTest_AssertPass("Call to SDL_swprintf(\"%%s\", \"foo\")"); SDLTest_AssertCheck(SDL_wcscmp(text, expected) == 0, "Check text, expected: %S, got: %S", expected, text);