Procházet zdrojové kódy

audio: fix crash in SDL_GetAudioStreamOutputChannelMap.

Fixes #14058.
Ryan C. Gordon před 1 týdnem
rodič
revize
2676f23910
1 změnil soubory, kde provedl 8 přidání a 7 odebrání
  1. 8 7
      src/audio/SDL_audio.c

+ 8 - 7
src/audio/SDL_audio.c

@@ -171,10 +171,13 @@ int SDL_GetDefaultSampleFramesFromFreq(const int freq)
 
 int *SDL_ChannelMapDup(const int *origchmap, int channels)
 {
-    const size_t chmaplen = sizeof (*origchmap) * channels;
-    int *chmap = (int *)SDL_malloc(chmaplen);
-    if (chmap) {
-        SDL_memcpy(chmap, origchmap, chmaplen);
+    int *chmap = NULL;
+    if ((channels > 0) && origchmap) {
+        const size_t chmaplen = sizeof (*origchmap) * channels;
+        chmap = (int *)SDL_malloc(chmaplen);
+        if (chmap) {
+            SDL_memcpy(chmap, origchmap, chmaplen);
+        }
     }
     return chmap;
 }
@@ -1617,9 +1620,7 @@ int *SDL_GetAudioDeviceChannelMap(SDL_AudioDeviceID devid, int *count)
     SDL_AudioDevice *device = ObtainPhysicalAudioDeviceDefaultAllowed(devid);
     if (device) {
         channels = device->spec.channels;
-        if (channels > 0 && device->chmap) {
-            result = SDL_ChannelMapDup(device->chmap, channels);
-        }
+        result = SDL_ChannelMapDup(device->chmap, channels);
     }
     ReleaseAudioDevice(device);