diff options
author | Mark Riedesel <mark@klowner.com> | 2021-10-18 09:52:01 -0400 |
---|---|---|
committer | Mark Riedesel <mark@klowner.com> | 2021-10-18 10:47:11 -0400 |
commit | 61ab63a4be73b5a70a26604e05c2bdea669ceca6 (patch) | |
tree | e8a11ce30b2d69e502687c1303e26cae3d805dcb /servers/audio_server.cpp | |
parent | ba24e29334f6f3fcd5393e9dda167926862e7e5f (diff) |
fix potential memory leak of AudioStreamPlaybackBusDetails in AudioServer::start_playback_stream()
Diffstat (limited to 'servers/audio_server.cpp')
-rw-r--r-- | servers/audio_server.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/servers/audio_server.cpp b/servers/audio_server.cpp index a420134626..ab704c6f78 100644 --- a/servers/audio_server.cpp +++ b/servers/audio_server.cpp @@ -1131,8 +1131,10 @@ void AudioServer::start_playback_stream(Ref<AudioStreamPlayback> p_playback, Map AudioStreamPlaybackBusDetails *new_bus_details = new AudioStreamPlaybackBusDetails(); int idx = 0; for (KeyValue<StringName, Vector<AudioFrame>> pair : p_bus_volumes) { - ERR_FAIL_COND(pair.value.size() < channel_count); - ERR_FAIL_COND(pair.value.size() != MAX_CHANNELS_PER_BUS); + if (pair.value.size() < channel_count || pair.value.size() != MAX_CHANNELS_PER_BUS) { + delete new_bus_details; + ERR_FAIL(); + } new_bus_details->bus_active[idx] = true; new_bus_details->bus[idx] = pair.key; |