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

View File

@@ -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);