In many SDL APIs that return a SDL_Surface *, the surface is considered to be owned by the caller, and must be freed by the caller.
However, SDL_SetVideoMode and presumably SDL_GetVideoSurface return a pointer to SDL's internal video surface, which will be freed by SDL if necessary, and must not be freed by library users. Incorrectly freeing this surface can lead to a use-after-free crash, manifesting as a test failure in t/core_video.t.
In many SDL APIs that return a SDL_Surface *, the surface is considered to be owned by the caller, and must be freed by the caller.
However, SDL_SetVideoMode and presumably SDL_GetVideoSurface return a pointer to SDL's internal video surface, which will be freed by SDL if necessary, and must not be freed by library users. Incorrectly freeing this surface can lead to a use-after-free crash, manifesting as a test failure in t/core_video.t.
See also https://github.com/libsdl-org/sdl12-compat/issues/305
Resolves: https://github.com/PerlGameDev/SDL/issues/305
This could probably be done a lot more elegantly, but it's my first attempt at writing XS.