diff --git a/src/video/SDL_surface.c b/src/video/SDL_surface.c index 65fb0bc01..934a9195b 100644 --- a/src/video/SDL_surface.c +++ b/src/video/SDL_surface.c @@ -901,6 +901,9 @@ void SDL_FreeSurface (SDL_Surface *surface) if ( --surface->refcount > 0 ) { return; } + while ( surface->locked > 0 ) { + SDL_UnlockSurface(surface); + } if ( (surface->flags & SDL_RLEACCEL) == SDL_RLEACCEL ) { SDL_UnRLESurface(surface, 0); }