diff options
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 6 | ||||
-rw-r--r-- | src/mm-iface-modem-firmware.c | 13 |
2 files changed, 14 insertions, 5 deletions
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index c31ab0b5..e3b37bd5 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -10355,7 +10355,11 @@ firmware_load_list (MMIfaceModemFirmware *_self, dup = g_list_copy_deep (self->priv->firmware_list, (GCopyFunc)g_object_ref, NULL); task = g_task_new (self, NULL, callback, user_data); - g_task_return_pointer (task, dup, (GDestroyNotify)firmware_list_free); + if (dup) + g_task_return_pointer (task, dup, (GDestroyNotify)firmware_list_free); + else + g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_NOT_FOUND, + "firmware list unknown"); g_object_unref (task); } diff --git a/src/mm-iface-modem-firmware.c b/src/mm-iface-modem-firmware.c index f87a7bf1..da106b00 100644 --- a/src/mm-iface-modem-firmware.c +++ b/src/mm-iface-modem-firmware.c @@ -99,10 +99,15 @@ load_list_ready (MMIfaceModemFirmware *self, GError *error = NULL; ctx->list = MM_IFACE_MODEM_FIRMWARE_GET_INTERFACE (self)->load_list_finish (self, res, &error); - if (error) { - g_dbus_method_invocation_take_error (ctx->invocation, error); - handle_list_context_free (ctx); - return; + if (!ctx->list) { + /* Not found isn't fatal */ + if (!g_error_matches (error, MM_CORE_ERROR, MM_CORE_ERROR_NOT_FOUND)) { + g_dbus_method_invocation_take_error (ctx->invocation, error); + handle_list_context_free (ctx); + return; + } + mm_dbg ("Couldn't load firmware image list: %s", error->message); + g_clear_error (&error); } MM_IFACE_MODEM_FIRMWARE_GET_INTERFACE (self)->load_current (MM_IFACE_MODEM_FIRMWARE (self), |