We don't currently support blitting to < 8 bpp surfaces, return an error instead of corrupting memory in that case.
diff --git a/src/video/SDL_blit.c b/src/video/SDL_blit.c
index 90aa878..b64f4cb 100644
--- a/src/video/SDL_blit.c
+++ b/src/video/SDL_blit.c
@@ -219,6 +219,12 @@ SDL_CalculateBlit(SDL_Surface * surface)
SDL_BlitMap *map = surface->map;
SDL_Surface *dst = map->dst;
+ /* We don't currently support blitting to < 8 bpp surfaces */
+ if (dst->format->BitsPerPixel < 8) {
+ SDL_InvalidateMap(map);
+ return SDL_SetError("Blit combination not supported");
+ }
+
/* Clean everything out to start */
if ((surface->flags & SDL_RLEACCEL) == SDL_RLEACCEL) {
SDL_UnRLESurface(surface, 1);