diff --git a/src/libmbim-glib/mbim-device.c b/src/libmbim-glib/mbim-device.c index 221956a751fb0e35226c02d73041c095cebbd855..745947bdb474e87686936b5933c6e916a1322353 100644 --- a/src/libmbim-glib/mbim-device.c +++ b/src/libmbim-glib/mbim-device.c @@ -158,8 +158,11 @@ transaction_context_free (TransactionContext *ctx) if (ctx->fragments) mbim_message_unref (ctx->fragments); - if (ctx->timeout_source) - g_source_destroy (ctx->timeout_source); + if (ctx->timeout_source) { + if (!g_source_is_destroyed (ctx->timeout_source)) + g_source_destroy (ctx->timeout_source); + g_source_unref (ctx->timeout_source); + } if (ctx->cancellable) { if (ctx->cancellable_id) @@ -369,7 +372,6 @@ device_store_transaction (MbimDevice *self, ctx->timeout_source = g_timeout_source_new (timeout_ms); g_source_set_callback (ctx->timeout_source, (GSourceFunc)transaction_timed_out, ctx->wait_ctx, NULL); g_source_attach (ctx->timeout_source, g_main_context_get_thread_default ()); - g_source_unref (ctx->timeout_source); } /* Indication transactions don't have cancellable */