From 6935d6cf3658a40a11e2da0ad45e360a914a1a3e Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Thu, 16 Jan 2014 17:04:52 +0100 Subject: [PATCH] Add check to prevent crashes when using a wrapper about liblinphone. If a wrapper holds a reference to a linphone call and the core is destroyed, the call can keep a reference to a core that no longer exists. This can cause some random crashes. --- coreapi/linphonecall.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 0700577dc..88e7c49e2 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -2086,12 +2086,15 @@ void linphone_call_stop_video_stream(LinphoneCall *call) { } void linphone_call_stop_media_streams(LinphoneCall *call){ - linphone_call_stop_audio_stream(call); - linphone_call_stop_video_stream(call); + if (call->audiostream || call->videostream) { + linphone_call_stop_audio_stream(call); + linphone_call_stop_video_stream(call); - if (call->core->msevq != NULL) { - ms_event_queue_skip(call->core->msevq); + if (call->core->msevq != NULL) { + ms_event_queue_skip(call->core->msevq); + } } + if (call->audio_profile){ rtp_profile_destroy(call->audio_profile); call->audio_profile=NULL;