summaryrefslogtreecommitdiff
path: root/servers/audio_server.cpp
diff options
context:
space:
mode:
authorMark Riedesel <mark@klowner.com>2021-10-18 09:52:01 -0400
committerMark Riedesel <mark@klowner.com>2021-10-18 10:47:11 -0400
commit61ab63a4be73b5a70a26604e05c2bdea669ceca6 (patch)
treee8a11ce30b2d69e502687c1303e26cae3d805dcb /servers/audio_server.cpp
parentba24e29334f6f3fcd5393e9dda167926862e7e5f (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.cpp6
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;