]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
[core] fix memory leak on playback, in certain error conditions (eg: native file... 275/head
authorDragos Oancea <dragos@signalwire.com>
Thu, 30 Jan 2020 15:13:34 +0000 (15:13 +0000)
committerDragos Oancea <dragos@signalwire.com>
Thu, 30 Jan 2020 15:17:33 +0000 (15:17 +0000)
src/switch_ivr_play_say.c

index 339515faec45667dcec3bd35e1387be9756b36ef..e4f6de3552bf14b18609e2a05b2dd8a5ff59930b 100644 (file)
@@ -1474,11 +1474,6 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
 
                interval = read_impl.microseconds_per_packet / 1000;
 
-               if (!fh->audio_buffer) {
-                       switch_buffer_create_dynamic(&fh->audio_buffer, FILE_BLOCKSIZE, FILE_BUFSIZE, 0);
-                       switch_assert(fh->audio_buffer);
-               }
-
                codec_name = "L16";
 
                if (!switch_core_codec_ready((&codec))) {
@@ -1589,6 +1584,11 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
                        switch_event_fire(&event);
                }
 
+               if (!fh->audio_buffer) {
+                       switch_buffer_create_dynamic(&fh->audio_buffer, FILE_BLOCKSIZE, FILE_BUFSIZE, 0);
+                       switch_assert(fh->audio_buffer);
+               }
+
                for (;;) {
                        int do_speed = 1;
                        int last_speed = -1;