diff --git a/plugins/provider/mm/calls-mm-origin.c b/plugins/provider/mm/calls-mm-origin.c index 9623ea8ccdfb808248ea9e4e680af108e8e1bd05..06cd306a1b2ffb9e39a52ba983d298a6a1e84670 100644 --- a/plugins/provider/mm/calls-mm-origin.c +++ b/plugins/provider/mm/calls-mm-origin.c @@ -652,7 +652,8 @@ on_modem_location_get_3gpp_finish (GObject *source_object, GAsyncResult *res, gp location_3gpp = mm_modem_location_get_3gpp_finish (location, res, &err); if (!location_3gpp) { - g_warning ("Failed to get 3gpp location service: %s", err->message); + if (err) + g_warning ("Failed to get 3gpp location service: %s", err->message); return; } @@ -881,13 +882,18 @@ get_sim_ready_cb (MMModem *modem, GAsyncResult *res, gpointer user_data) { + g_autoptr (GError) err = NULL; g_autoptr (CallsMMOrigin) self = NULL; const char *code; g_assert (CALLS_IS_MM_ORIGIN (user_data)); self = CALLS_MM_ORIGIN (user_data); - self->sim = mm_modem_get_sim_finish (modem, res, NULL); + self->sim = mm_modem_get_sim_finish (modem, res, &err); + if (!self->sim) { + g_warning ("Couldn't get sim: %s", err->message); + return; + } code = get_country_iso_for_mcc (mm_sim_get_imsi (self->sim)); if (code && g_strcmp0 (self->country_code, code)) { diff --git a/plugins/provider/sip/calls-sip-origin.c b/plugins/provider/sip/calls-sip-origin.c index 28de518fe09a224d5b92df02ed06061ba721fe3c..e771264974bcd560d224ebba075d7b9980791ae9 100644 --- a/plugins/provider/sip/calls-sip-origin.c +++ b/plugins/provider/sip/calls-sip-origin.c @@ -218,7 +218,8 @@ remove_calls (CallsSipOrigin *self, g_hash_table_remove_all (self->call_handles); - g_clear_pointer (&self->oper->call_handle, nua_handle_unref); + if (self->oper) + g_clear_pointer (&self->oper->call_handle, nua_handle_unref); } diff --git a/src/calls-ringer.c b/src/calls-ringer.c index 61fdc6ff28fdfed084905b454d733b8505e42097..12ba93e0534cee71cdb0aedf72db8c15c2481963 100644 --- a/src/calls-ringer.c +++ b/src/calls-ringer.c @@ -194,7 +194,8 @@ on_feedback_ended (LfbEvent *event, /* When no feedback is available on the system (e.g. no vibration motor or LEDs) * it will get ended immediately on triggering. Changing the target state will * break loop that would otherwise occur. */ - if (lfb_event_get_end_reason (event) == LFB_EVENT_END_REASON_NOT_FOUND) + if (lfb_event_get_end_reason (event) == LFB_EVENT_END_REASON_NOT_FOUND || + lfb_event_get_end_reason (event) == LFB_EVENT_END_REASON_EXPLICIT) self->target_state = CALLS_RING_STATE_INACTIVE; set_ring_state (self, CALLS_RING_STATE_INACTIVE);