Fixed return value of SDL_SaveBMP_RW() depending on set errors after NULL input.

If SDL_SaveBMP_RW() was called with NULL passed as SDL_RWops argument, different
values were returned depending on SDL_GetError(). If no error was set before the
call (or SDL_ClearError() was called) then 0 was returned. This is wrong because
nothing was saved. If an error was set before the call then -1 was returned.

This was fixed by directly returning -1 for NULL input instead of deciding based
on SDL_GetError(). No new error is set because this would otherwise override a
maybe more useful error set in SDL_RWFromFile() which is used by SDL_SaveBMP().
main
Philipp Wiesemann 2015-04-16 22:04:35 +02:00
parent db878a4336
commit 5a578a0783
1 changed files with 4 additions and 0 deletions

View File

@ -531,6 +531,10 @@ SDL_SaveBMP_RW(SDL_Surface * saveme, SDL_RWops * dst, int freedst)
format.BitsPerPixel); format.BitsPerPixel);
} }
} }
} else {
/* Set no error here because it may overwrite a more useful message from
SDL_RWFromFile() if SDL_SaveBMP_RW() is called from SDL_SaveBMP(). */
return -1;
} }
if (surface && (SDL_LockSurface(surface) == 0)) { if (surface && (SDL_LockSurface(surface) == 0)) {