diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2020-06-02 10:01:43 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2020-06-02 10:01:43 +0200 |
commit | 08d40fe05d4b53946928c38ad488f5acff24d360 (patch) | |
tree | 4cc77dc10ea10af4666a48861c3398dd045f7b76 | |
parent | d8b70602c51b77356eb439d63c4cac311d867310 (diff) |
wavecom: fix GTask return handling when loading current caps
-rw-r--r-- | plugins/wavecom/mm-broadband-modem-wavecom.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/plugins/wavecom/mm-broadband-modem-wavecom.c b/plugins/wavecom/mm-broadband-modem-wavecom.c index 86ba77cf..4d41feb8 100644 --- a/plugins/wavecom/mm-broadband-modem-wavecom.c +++ b/plugins/wavecom/mm-broadband-modem-wavecom.c @@ -325,7 +325,7 @@ current_ms_class_ready (MMBaseModem *self, GAsyncResult *res, GTask *task) { - LoadCurrentModesResult result; + LoadCurrentModesResult *result; const gchar *response; GError *error = NULL; @@ -352,37 +352,39 @@ current_ms_class_ready (MMBaseModem *self, return; } - result.allowed = MM_MODEM_MODE_NONE; - result.preferred = MM_MODEM_MODE_NONE; + result = g_new0 (LoadCurrentModesResult, 1); + result->allowed = MM_MODEM_MODE_NONE; + result->preferred = MM_MODEM_MODE_NONE; if (strncmp (response, WAVECOM_MS_CLASS_B_IDSTR, strlen (WAVECOM_MS_CLASS_B_IDSTR)) == 0) { mm_obj_dbg (self, "configured as a Class B mobile station"); - result.allowed = (MM_MODEM_MODE_2G | MM_MODEM_MODE_CS); - result.preferred = MM_MODEM_MODE_2G; + result->allowed = (MM_MODEM_MODE_2G | MM_MODEM_MODE_CS); + result->preferred = MM_MODEM_MODE_2G; } else if (strncmp (response, WAVECOM_MS_CLASS_CG_IDSTR, strlen (WAVECOM_MS_CLASS_CG_IDSTR)) == 0) { mm_obj_dbg (self, "configured as a Class CG mobile station"); - result.allowed = MM_MODEM_MODE_2G; - result.preferred = MM_MODEM_MODE_NONE; + result->allowed = MM_MODEM_MODE_2G; + result->preferred = MM_MODEM_MODE_NONE; } else if (strncmp (response, WAVECOM_MS_CLASS_CC_IDSTR, strlen (WAVECOM_MS_CLASS_CC_IDSTR)) == 0) { mm_obj_dbg (self, "configured as a Class CC mobile station"); - result.allowed = MM_MODEM_MODE_CS; - result.preferred = MM_MODEM_MODE_NONE; + result->allowed = MM_MODEM_MODE_CS; + result->preferred = MM_MODEM_MODE_NONE; } - if (result.allowed == MM_MODEM_MODE_NONE) + if (result->allowed == MM_MODEM_MODE_NONE) { g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, "Unknown mobile station class: '%s'", response); - else - g_task_return_boolean (task, TRUE); + g_free (result); + } else + g_task_return_pointer (task, result, g_free); g_object_unref (task); } |