sdl2-compat: SDL2Compat_InitOnStartup clean-up :

From 39ea4c35e2161540e6e221d6848ad702616812df Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Wed, 8 Feb 2023 21:55:24 +0300
Subject: [PATCH] SDL2Compat_InitOnStartup clean-up :

- bail out at first mutex creation.
- set the hints and the EventFilter3to2 filter only after all mutex
  creations actually succeed.
---
 src/sdl2_compat.c | 30 ++++++++++++++++++++----------
 1 file changed, 20 insertions(+), 10 deletions(-)

diff --git a/src/sdl2_compat.c b/src/sdl2_compat.c
index 1333822..f8b7d24 100644
--- a/src/sdl2_compat.c
+++ b/src/sdl2_compat.c
@@ -1046,33 +1046,43 @@ static int SDLCALL EventFilter3to2(void *userdata, SDL_Event *event3);
 static int
 SDL2Compat_InitOnStartup(void)
 {
-    int okay = 1;
     EventWatchListMutex = SDL3_CreateMutex();
     if (!EventWatchListMutex) {
-        okay = 0;
-    } else {
-        SDL3_SetEventFilter(EventFilter3to2, NULL);
+        goto fail;
     }
 
     sensor_lock = SDL3_CreateMutex();
     if (sensor_lock == NULL) {
-        okay = 0;
+        goto fail;
     }
 
     joystick_lock = SDL3_CreateMutex();
     if (joystick_lock == NULL) {
-        okay = 0;
+        goto fail;
     }
 
-    if (!okay) {
-        strcpy_fn(loaderror, "Failed to initialize sdl2-compat library.");
-    }
+    SDL3_SetEventFilter(EventFilter3to2, NULL);
 
     SDL3_SetHint("SDL_WINDOWS_DPI_SCALING", 0);
     SDL3_SetHint("SDL_WINDOWS_DPI_AWARENESS", "unaware");
     SDL3_SetHint("SDL_BORDERLESS_WINDOWED_STYLE", "0");
 
-    return okay;
+    return 1;
+
+fail:
+    strcpy_fn(loaderror, "Failed to initialize sdl2-compat library.");
+
+    if (EventWatchListMutex) {
+        SDL3_DestroyMutex(EventWatchListMutex);
+    }
+    if (sensor_lock) {
+        SDL3_DestroyMutex(sensor_lock);
+    }
+    if (joystick_lock) {
+        SDL3_DestroyMutex(joystick_lock);
+    }
+
+    return 0;
 }