Browse Source

We don't currently support blitting to < 8 bpp surfaces, return an error instead of corrupting memory in that case.

Sam Lantinga 8 years ago
parent
commit
49225f5f04
1 changed files with 6 additions and 0 deletions
  1. 6 0
      src/video/SDL_blit.c

+ 6 - 0
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);