audio: fix crash in SDL_GetAudioStreamOutputChannelMap.

Fixes #14058.
This commit is contained in:
Ryan C. Gordon
2025-09-27 13:28:15 -04:00
parent 2c8c2d72b5
commit 2676f23910
+8 -7
View File
@@ -171,10 +171,13 @@ int SDL_GetDefaultSampleFramesFromFreq(const int freq)
int *SDL_ChannelMapDup(const int *origchmap, int channels) int *SDL_ChannelMapDup(const int *origchmap, int channels)
{ {
const size_t chmaplen = sizeof (*origchmap) * channels; int *chmap = NULL;
int *chmap = (int *)SDL_malloc(chmaplen); if ((channels > 0) && origchmap) {
if (chmap) { const size_t chmaplen = sizeof (*origchmap) * channels;
SDL_memcpy(chmap, origchmap, chmaplen); chmap = (int *)SDL_malloc(chmaplen);
if (chmap) {
SDL_memcpy(chmap, origchmap, chmaplen);
}
} }
return chmap; return chmap;
} }
@@ -1617,9 +1620,7 @@ int *SDL_GetAudioDeviceChannelMap(SDL_AudioDeviceID devid, int *count)
SDL_AudioDevice *device = ObtainPhysicalAudioDeviceDefaultAllowed(devid); SDL_AudioDevice *device = ObtainPhysicalAudioDeviceDefaultAllowed(devid);
if (device) { if (device) {
channels = device->spec.channels; channels = device->spec.channels;
if (channels > 0 && device->chmap) { result = SDL_ChannelMapDup(device->chmap, channels);
result = SDL_ChannelMapDup(device->chmap, channels);
}
} }
ReleaseAudioDevice(device); ReleaseAudioDevice(device);