From a9eaede99b9227259fc9a10027bab38a617a15d1 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Sun, 2 Feb 2025 16:49:31 -0800
Subject: [PATCH] Fixed memory leak with surfaces created by SDL_ttf
SDL_ttf creates preallocated surfaces and then clears the preallocated flag so SDL can free them. Make sure we synchronize the flags correctly to pick this change up.
---
src/sdl2_compat.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/sdl2_compat.c b/src/sdl2_compat.c
index dcbe005..35bdc3a 100644
--- a/src/sdl2_compat.c
+++ b/src/sdl2_compat.c
@@ -2812,7 +2812,7 @@ static void SynchronizeSurface3to2(SDL_Surface *surface, SDL2_Surface *surface2)
* https://github.com/libsdl-org/SDL/blob/be991239d9bc6df06b0ca7a9ae9dbb7251e93c12/src/video/SDL_RLEaccel.c#L1180-L1189
*/
if (surface && surface->pixels != surface2->pixels) {
- surface2->flags &= ~(surface->flags & SHARED_SURFACE_FLAGS);
+ surface2->flags &= ~SHARED_SURFACE_FLAGS;
surface2->flags |= (surface->flags & SHARED_SURFACE_FLAGS);
surface2->pixels = surface->pixels;
surface2->pitch = surface->pitch;
@@ -2833,7 +2833,7 @@ static SDL_Surface *Surface2to3(SDL2_Surface *surface)
*/
surface3->w = surface->w;
surface3->h = surface->h;
- surface3->flags &= ~(surface->flags & SHARED_SURFACE_FLAGS);
+ surface3->flags &= ~SHARED_SURFACE_FLAGS;
surface3->flags |= (surface->flags & SHARED_SURFACE_FLAGS);
surface3->pixels = surface->pixels;
surface3->pitch = surface->pitch;