From bea1b58e305a95dcc57d7e0f5d247fe62a2ec1b6 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 2 Feb 2016 21:13:29 +0100 Subject: [PATCH] fix crash Valgrind backtrace: 2016-02-02 21:08:50:540 ortp-warning-Audio conference MSTicker: We are late of 846 miliseconds. ==42557== Invalid write of size 1 ==42557== at 0x4E9253D: Linphone::RemoteConference::terminate() (conference.cc:729) ==42557== by 0x4EADA34: linphone_core_terminate_conference (linphonecore.c:7533) ==42557== by 0x5171B20: simple_conference_base (multi_call_tester.c:282) ==42557== by 0x5172468: simple_remote_conference (multi_call_tester.c:801) ==42557== by 0x80C76B5: run_single_test (in /usr/local/lib/libcunit.so.1.0.1) ==42557== by 0x80C52F7: CU_run_test (in /usr/local/lib/libcunit.so.1.0.1) ==42557== by 0x5194E7B: bc_tester_run_tests (bc_tester_utils.c:331) ==42557== by 0x400F4A: main (liblinphone_tester.c:245) ==42557== Address 0x1e0a5cc0 is 128 bytes inside a block of size 136 free'd ==42557== at 0x4C2C2BC: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==42557== by 0x4EA45BB: linphone_core_conference_state_changed (linphonecore.c:7468) ==42557== by 0x4E9253C: Linphone::RemoteConference::terminate() (conference.cc:723) ==42557== by 0x4EADA34: linphone_core_terminate_conference (linphonecore.c:7533) ==42557== by 0x5171B20: simple_conference_base (multi_call_tester.c:282) ==42557== by 0x5172468: simple_remote_conference (multi_call_tester.c:801) ==42557== by 0x80C76B5: run_single_test (in /usr/local/lib/libcunit.so.1.0.1) ==42557== by 0x80C52F7: CU_run_test (in /usr/local/lib/libcunit.so.1.0.1) ==42557== by 0x5194E7B: bc_tester_run_tests (bc_tester_utils.c:331) ==42557== by 0x400F4A: main (liblinphone_tester.c:245) ==42557== --- coreapi/conference.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/coreapi/conference.cc b/coreapi/conference.cc index a59608b43..fee935b82 100644 --- a/coreapi/conference.cc +++ b/coreapi/conference.cc @@ -720,13 +720,15 @@ int RemoteConference::terminate() { linphone_core_terminate_call(m_core, m_focusCall); reset(); Conference::terminate(); + m_isTerminating = false; setState(LinphoneConferenceStopped); break; default: + m_isTerminating = false; break; } - m_isTerminating = false; + return 0; }