]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-7513: fix segfault on conference hangup
authorBrian West <brian@freeswitch.org>
Tue, 24 Mar 2015 19:16:04 +0000 (14:16 -0500)
committerMichael Jerris <mike@jerris.com>
Thu, 28 May 2015 17:47:14 +0000 (12:47 -0500)
src/mod/applications/mod_conference/mod_conference.c

index 5c719cee7b48f453ed51579fd206a1539f7d7098..aeb8aacf66669e8a13d2be7c148a21f5d6003b81 100644 (file)
@@ -1553,7 +1553,7 @@ static void write_canvas_image_to_codec_group(conference_obj_t *conference, code
                                
                                //switch_core_session_write_encoded_video_frame(imember->session, frame, 0, 0);
                                switch_set_flag(frame, SFF_ENCODED);
-                               
+
                                if (switch_frame_buffer_dup(imember->fb, frame, &dupframe) == SWITCH_STATUS_SUCCESS) {
                                        switch_queue_push(imember->mux_out_queue, dupframe);
                                        dupframe = NULL;
@@ -6591,7 +6591,6 @@ static void conference_loop_output(conference_member_t *member)
                if (member->video_muxing_write_thread) {
                        switch_queue_push(member->mux_out_queue, NULL);
                        switch_thread_join(&st, member->video_muxing_write_thread);
-                       switch_frame_buffer_destroy(&member->fb);
                }
        }
 
@@ -11754,6 +11753,10 @@ SWITCH_STANDARD_APP(conference_function)
        switch_buffer_destroy(&member.audio_buffer);
        switch_buffer_destroy(&member.mux_buffer);
 
+       if (member.fb) {
+               switch_frame_buffer_destroy(&member.fb);
+       }
+
        if (conference) {
                switch_mutex_lock(conference->mutex);
                if (switch_test_flag(conference, CFLAG_DYNAMIC) && conference->count == 0) {