Skip to content

Commit 8333f7e

Browse files
committed
Fixed some issues found with static analysis
1 parent df025f7 commit 8333f7e

File tree

6 files changed

+41
-14
lines changed

6 files changed

+41
-14
lines changed

Diff for: src/test/SDL_test_common.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -840,7 +840,7 @@ static void SDLTest_PrintWindowFlag(char *text, size_t maxlen, SDL_WindowFlags f
840840
SDL_snprintfcat(text, maxlen, "TRANSPARENT");
841841
break;
842842
default:
843-
SDL_snprintfcat(text, maxlen, "0x%8.8x", flag);
843+
SDL_snprintfcat(text, maxlen, "0x%16.16" SDL_PRIx64, flag);
844844
break;
845845
}
846846
}

Diff for: src/thread/windows/SDL_sysmutex.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,8 @@ static SDL_Mutex *SDL_CreateMutex_cs(void)
146146
#ifdef SDL_PLATFORM_WINRT
147147
InitializeCriticalSectionEx(&mutex->cs, 2000, 0);
148148
#else
149-
InitializeCriticalSectionAndSpinCount(&mutex->cs, 2000);
149+
// This function always succeeds
150+
(void)InitializeCriticalSectionAndSpinCount(&mutex->cs, 2000);
150151
#endif
151152
}
152153
return (SDL_Mutex *)mutex;

Diff for: src/video/SDL_blit_0.c

+24-6
Original file line numberDiff line numberDiff line change
@@ -928,10 +928,16 @@ SDL_BlitFunc SDL_CalculateBlit0(SDL_Surface *surface)
928928
if (SDL_PIXELTYPE(surface->format) == SDL_PIXELTYPE_INDEX1) {
929929
switch (surface->internal->map.info.flags & ~SDL_COPY_RLE_MASK) {
930930
case 0:
931-
return bitmap_blit_1b[which];
931+
if (which < SDL_arraysize(bitmap_blit_1b)) {
932+
return bitmap_blit_1b[which];
933+
}
934+
break;
932935

933936
case SDL_COPY_COLORKEY:
934-
return colorkey_blit_1b[which];
937+
if (which < SDL_arraysize(colorkey_blit_1b)) {
938+
return colorkey_blit_1b[which];
939+
}
940+
break;
935941

936942
case SDL_COPY_MODULATE_ALPHA | SDL_COPY_BLEND:
937943
return which >= 2 ? Blit1btoNAlpha : (SDL_BlitFunc)NULL;
@@ -945,10 +951,16 @@ SDL_BlitFunc SDL_CalculateBlit0(SDL_Surface *surface)
945951
if (SDL_PIXELTYPE(surface->format) == SDL_PIXELTYPE_INDEX2) {
946952
switch (surface->internal->map.info.flags & ~SDL_COPY_RLE_MASK) {
947953
case 0:
948-
return bitmap_blit_2b[which];
954+
if (which < SDL_arraysize(bitmap_blit_2b)) {
955+
return bitmap_blit_2b[which];
956+
}
957+
break;
949958

950959
case SDL_COPY_COLORKEY:
951-
return colorkey_blit_2b[which];
960+
if (which < SDL_arraysize(colorkey_blit_2b)) {
961+
return colorkey_blit_2b[which];
962+
}
963+
break;
952964

953965
case SDL_COPY_MODULATE_ALPHA | SDL_COPY_BLEND:
954966
return which >= 2 ? Blit2btoNAlpha : (SDL_BlitFunc)NULL;
@@ -962,10 +974,16 @@ SDL_BlitFunc SDL_CalculateBlit0(SDL_Surface *surface)
962974
if (SDL_PIXELTYPE(surface->format) == SDL_PIXELTYPE_INDEX4) {
963975
switch (surface->internal->map.info.flags & ~SDL_COPY_RLE_MASK) {
964976
case 0:
965-
return bitmap_blit_4b[which];
977+
if (which < SDL_arraysize(bitmap_blit_4b)) {
978+
return bitmap_blit_4b[which];
979+
}
980+
break;
966981

967982
case SDL_COPY_COLORKEY:
968-
return colorkey_blit_4b[which];
983+
if (which < SDL_arraysize(colorkey_blit_4b)) {
984+
return colorkey_blit_4b[which];
985+
}
986+
break;
969987

970988
case SDL_COPY_MODULATE_ALPHA | SDL_COPY_BLEND:
971989
return which >= 2 ? Blit4btoNAlpha : (SDL_BlitFunc)NULL;

Diff for: src/video/SDL_blit_1.c

+8-2
Original file line numberDiff line numberDiff line change
@@ -526,10 +526,16 @@ SDL_BlitFunc SDL_CalculateBlit1(SDL_Surface *surface)
526526

527527
switch (surface->internal->map.info.flags & ~SDL_COPY_RLE_MASK) {
528528
case 0:
529-
return one_blit[which];
529+
if (which < SDL_arraysize(one_blit)) {
530+
return one_blit[which];
531+
}
532+
break;
530533

531534
case SDL_COPY_COLORKEY:
532-
return one_blitkey[which];
535+
if (which < SDL_arraysize(one_blitkey)) {
536+
return one_blitkey[which];
537+
}
538+
break;
533539

534540
case SDL_COPY_COLORKEY | SDL_COPY_BLEND: /* this is not super-robust but handles a specific case we found sdl12-compat. */
535541
return (surface->internal->map.info.a == 255) ? one_blitkey[which] :

Diff for: test/checkkeys.c

+5-3
Original file line numberDiff line numberDiff line change
@@ -561,10 +561,12 @@ int main(int argc, char *argv[])
561561
#endif
562562

563563
done:
564-
for (i = 0; i < state->num_windows; ++i) {
565-
SDLTest_TextWindowDestroy(windowstates[i].textwindow);
564+
if (windowstates) {
565+
for (i = 0; i < state->num_windows; ++i) {
566+
SDLTest_TextWindowDestroy(windowstates[i].textwindow);
567+
}
568+
SDL_free(windowstates);
566569
}
567-
SDL_free(windowstates);
568570
SDLTest_CleanupTextDrawing();
569571
SDLTest_CommonQuit(state);
570572
return 0;

Diff for: test/testautomation_stdlib.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ static int stdlib_swprintf(void *arg)
378378
const wchar_t *expected;
379379
size_t size;
380380

381-
result = SDL_swprintf(text, sizeof(text), L"%s", "foo");
381+
result = SDL_swprintf(text, SDL_arraysize(text), L"%s", "foo");
382382
expected = L"foo";
383383
SDLTest_AssertPass("Call to SDL_swprintf(\"%%s\", \"foo\")");
384384
SDLTest_AssertCheck(SDL_wcscmp(text, expected) == 0, "Check text, expected: %S, got: %S", expected, text);

0 commit comments

Comments
 (0)