aboutsummaryrefslogtreecommitdiff
path: root/src/mm-iface-modem.c
diff options
context:
space:
mode:
authorBen Chan <benchan@chromium.org>2017-07-05 22:20:09 -0700
committerAleksander Morgado <aleksander@aleksander.es>2017-07-06 10:50:27 +0200
commitd56621b9a1343fdda784730846f23c805d2145c4 (patch)
tree9e58463d1931585f84e66b162bb356f2534da673 /src/mm-iface-modem.c
parentba3a7f0c69e067f383b459d53507dd77a5d644af (diff)
iface-modem: check error returned by g_task_propagate_error instead
When returning an enum value via g_task_return_int, some code assumes the enum value is always non-negative and thus considers that a negative value implies an error. This assumption could be invalidated if a negative value is later added to the enum. To make it less error prone to future changes, this patch modifies the code to check if the GError argument to g_task_propagate_error is populated instead.
Diffstat (limited to 'src/mm-iface-modem.c')
-rw-r--r--src/mm-iface-modem.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c
index cd462a38..e79e55c3 100644
--- a/src/mm-iface-modem.c
+++ b/src/mm-iface-modem.c
@@ -245,11 +245,15 @@ internal_load_unlock_required_finish (MMIfaceModem *self,
GAsyncResult *res,
GError **error)
{
+ GError *inner_error = NULL;
gssize value;
- value = g_task_propagate_int (G_TASK (res), error);
-
- return value < 0 ? MM_MODEM_LOCK_UNKNOWN : (MMModemLock)value;
+ value = g_task_propagate_int (G_TASK (res), &inner_error);
+ if (inner_error) {
+ g_propagate_error (error, inner_error);
+ return MM_MODEM_LOCK_UNKNOWN;
+ }
+ return (MMModemLock)value;
}
static void internal_load_unlock_required_context_step (GTask *task);
@@ -2990,10 +2994,15 @@ mm_iface_modem_update_lock_info_finish (MMIfaceModem *self,
GAsyncResult *res,
GError **error)
{
+ GError *inner_error = NULL;
gssize value;
- value = g_task_propagate_int (G_TASK (res), error);
- return value < 0 ? MM_MODEM_LOCK_UNKNOWN : (MMModemLock)value;
+ value = g_task_propagate_int (G_TASK (res), &inner_error);
+ if (inner_error) {
+ g_propagate_error (error, inner_error);
+ return MM_MODEM_LOCK_UNKNOWN;
+ }
+ return (MMModemLock)value;
}
static void update_lock_info_context_step (GTask *task);