SDL: coreaudio: simplify memory leak fix.

From 17af09f3a99bfea9547a6619f4da3fb0106003c2 Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Sat, 15 Jun 2024 11:42:44 -0400
Subject: [PATCH] coreaudio: simplify memory leak fix.

I _did_ appreciate the explanation, but it doesn't have to live in the
source code; also we can just release `devuid` and then check for error with
the usual macro, since SDL is done with it either way at this point.
---
 src/audio/coreaudio/SDL_coreaudio.m | 30 ++---------------------------
 1 file changed, 2 insertions(+), 28 deletions(-)

diff --git a/src/audio/coreaudio/SDL_coreaudio.m b/src/audio/coreaudio/SDL_coreaudio.m
index f31baff90e67b..0a1bfe186673e 100644
--- a/src/audio/coreaudio/SDL_coreaudio.m
+++ b/src/audio/coreaudio/SDL_coreaudio.m
@@ -713,34 +713,8 @@ static int AssignDeviceToAudioQueue(SDL_AudioDevice *device)
     result = AudioObjectGetPropertyData(device->hidden->deviceID, &prop, 0, NULL, &devuidsize, &devuid);
     CHECK_RESULT("AudioObjectGetPropertyData (kAudioDevicePropertyDeviceUID)");
     result = AudioQueueSetProperty(device->hidden->audioQueue, kAudioQueueProperty_CurrentDevice, &devuid, devuidsize);
-
-    /*
-       If AudioObjectGetPropertyData succeeds and AudioQueueSetProperty fails,
-       calling CHECK_RESULT("AudioQueueSetProperty (kAudioQueueProperty_CurrentDevice)");
-       will cause a memory leak since it returns
-    */
-
-    // !!! FIXME: do we need to CFRelease(devuid)
-    /* Yes
-     CFStringRef is passed to AudioObjectGetPropertyData as an argument of type
-     UnsafeMutableRawPointer. As stated in the Apple Developer Documentation,
-     "The UnsafeMutableRawPointer type provides no automated memory management,
-     no type safety, and no alignment guarantees. You are responsible for
-     handling the life cycle of any memory you work with through
-     unsafe pointers, to avoid leaks or undefined behavior"
-    */
-
-    //This is the quickest fix
-    if (result != noErr) {
-        const char* msg = "AudioQueueSetProperty (kAudioQueueProperty_CurrentDevice)";
-        SDL_Log("COREAUDIO: Got error %d from '%s'!\n", (int)result, msg);
-        CFRelease(devuid);
-        return SDL_SetError("CoreAudio error (%s): %d", msg, (int)result);
-    }
-
-    //Release once you've finished using CFStringRef
-    CFRelease(devuid);
-
+    CFRelease(devuid);  // Release devuid; we're done with it and AudioQueueSetProperty should have retained if it wants to keep it.
+    CHECK_RESULT("AudioQueueSetProperty (kAudioQueueProperty_CurrentDevice)");
     return 0;
 }
 #endif