@@ -959,6 +959,36 @@ static int SDLCALL surface_testBlitBlendMul(void *arg)
959
959
return TEST_COMPLETED ;
960
960
}
961
961
962
+ /**
963
+ * Tests blitting invalid surfaces.
964
+ */
965
+ static int SDLCALL surface_testBlitInvalid (void * arg )
966
+ {
967
+ SDL_Surface * valid , * invalid ;
968
+ bool result ;
969
+
970
+ valid = SDL_CreateSurface (1 , 1 , SDL_PIXELFORMAT_RGBA8888 );
971
+ SDLTest_AssertCheck (valid != NULL , "Check surface creation" );
972
+ invalid = SDL_CreateSurface (0 , 0 , SDL_PIXELFORMAT_RGBA8888 );
973
+ SDLTest_AssertCheck (invalid != NULL , "Check surface creation" );
974
+ SDLTest_AssertCheck (invalid -> pixels == NULL , "Check surface pixels are NULL" );
975
+
976
+ result = SDL_BlitSurface (invalid , NULL , valid , NULL );
977
+ SDLTest_AssertCheck (result == true, "SDL_BlitSurface(invalid, NULL, valid, NULL), result = %s\n" , result ? "true" : "false" );
978
+ result = SDL_BlitSurface (valid , NULL , invalid , NULL );
979
+ SDLTest_AssertCheck (result == true, "SDL_BlitSurface(valid, NULL, invalid, NULL), result = %s\n" , result ? "true" : "false" );
980
+
981
+ result = SDL_BlitSurfaceScaled (invalid , NULL , valid , NULL , SDL_SCALEMODE_NEAREST );
982
+ SDLTest_AssertCheck (result == false, "SDL_BlitSurfaceScaled(invalid, NULL, valid, NULL, SDL_SCALEMODE_NEAREST), result = %s\n" , result ? "true" : "false" );
983
+ result = SDL_BlitSurfaceScaled (valid , NULL , invalid , NULL , SDL_SCALEMODE_NEAREST );
984
+ SDLTest_AssertCheck (result == false, "SDL_BlitSurfaceScaled(valid, NULL, invalid, NULL, SDL_SCALEMODE_NEAREST), result = %s\n" , result ? "true" : "false" );
985
+
986
+ SDL_DestroySurface (valid );
987
+ SDL_DestroySurface (invalid );
988
+
989
+ return TEST_COMPLETED ;
990
+ }
991
+
962
992
static int SDLCALL surface_testOverflow (void * arg )
963
993
{
964
994
char buf [1024 ];
@@ -1632,6 +1662,10 @@ static const SDLTest_TestCaseReference surfaceTestBlitBlendMul = {
1632
1662
surface_testBlitBlendMul , "surface_testBlitBlendMul" , "Tests blitting routines with mul blending mode." , TEST_ENABLED
1633
1663
};
1634
1664
1665
+ static const SDLTest_TestCaseReference surfaceTestBlitInvalid = {
1666
+ surface_testBlitInvalid , "surface_testBlitInvalid" , "Tests blitting routines with invalid surfaces." , TEST_ENABLED
1667
+ };
1668
+
1635
1669
static const SDLTest_TestCaseReference surfaceTestOverflow = {
1636
1670
surface_testOverflow , "surface_testOverflow" , "Test overflow detection." , TEST_ENABLED
1637
1671
};
@@ -1680,6 +1714,7 @@ static const SDLTest_TestCaseReference *surfaceTests[] = {
1680
1714
& surfaceTestBlitBlendAddPremultiplied ,
1681
1715
& surfaceTestBlitBlendMod ,
1682
1716
& surfaceTestBlitBlendMul ,
1717
+ & surfaceTestBlitInvalid ,
1683
1718
& surfaceTestOverflow ,
1684
1719
& surfaceTestFlip ,
1685
1720
& surfaceTestPalette ,
0 commit comments