Просмотр исходного кода

Allow setting NULL palette on any surface

Fixes https://github.com/libsdl-org/SDL/issues/15654
Sam Lantinga 1 день назад
Родитель
Сommit
cfed9b3aca
1 измененных файлов с 5 добавлено и 1 удалено
  1. 5 1
      src/video/SDL_surface.c

+ 5 - 1
src/video/SDL_surface.c

@@ -423,10 +423,14 @@ SDL_Palette *SDL_CreateSurfacePalette(SDL_Surface *surface)
 
 
 bool SDL_SetSurfacePalette(SDL_Surface *surface, SDL_Palette *palette)
 bool SDL_SetSurfacePalette(SDL_Surface *surface, SDL_Palette *palette)
 {
 {
-    CHECK_PARAM(!SDL_SurfaceValid(surface) || !SDL_ISPIXELFORMAT_INDEXED(surface->format)) {
+    CHECK_PARAM(!SDL_SurfaceValid(surface)) {
         return SDL_InvalidParamError("surface");
         return SDL_InvalidParamError("surface");
     }
     }
 
 
+    CHECK_PARAM(palette && !SDL_ISPIXELFORMAT_INDEXED(surface->format)) {
+        return SDL_SetError("Surface doesn't use a palette");
+    }
+
     CHECK_PARAM(palette && palette->ncolors > (1 << SDL_BITSPERPIXEL(surface->format))) {
     CHECK_PARAM(palette && palette->ncolors > (1 << SDL_BITSPERPIXEL(surface->format))) {
         return SDL_SetError("Palette doesn't match surface format");
         return SDL_SetError("Palette doesn't match surface format");
     }
     }