From 95c67ed9a77a684b6ee7dc2197f412d48764408f Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 7 Nov 2013 19:15:58 -0800 Subject: [PATCH] Fixed bug 2219 - BMP loader do not handle big BITMAPINFOHEADER structure Patrice Mandin I encountered a problem trying to load a 8-bit paletted BMP file using SDL. This file was generated using GIMP 2.8. It has a big BITMAPINFOHEADER (0x6c bytes for biSize field), and thus the palette is incorrectly setup. --- src/video/SDL_bmp.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/video/SDL_bmp.c b/src/video/SDL_bmp.c index 9244b28db..f471341fb 100644 --- a/src/video/SDL_bmp.c +++ b/src/video/SDL_bmp.c @@ -150,6 +150,8 @@ SDL_LoadBMP_RW(SDL_RWops * src, int freesrc) biBitCount = SDL_ReadLE16(src); biCompression = BI_RGB; } else { + const int headerSize = 40; + biWidth = SDL_ReadLE32(src); biHeight = SDL_ReadLE32(src); /* biPlanes = */ SDL_ReadLE16(src); @@ -160,6 +162,10 @@ SDL_LoadBMP_RW(SDL_RWops * src, int freesrc) /* biYPelsPerMeter = */ SDL_ReadLE32(src); biClrUsed = SDL_ReadLE32(src); /* biClrImportant = */ SDL_ReadLE32(src); + + if (biSize > headerSize) { + SDL_RWseek(src, (biSize - headerSize), RW_SEEK_CUR); + } } if (biHeight < 0) { topDown = SDL_TRUE;