aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Chan <benchan@chromium.org>2017-07-06 12:34:53 -0700
committerAleksander Morgado <aleksander@aleksander.es>2017-07-07 10:16:09 +0200
commitd308bbf4c6d9cfbf59c257e5a4c802cba9065906 (patch)
tree0bbb2d984de1ac3debf0153577f621e54f14eb1b
parent344d96af44f0c2aa4b31e39fb29c3e76d17b4e4b (diff)
novatel-lte: 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.
-rw-r--r--plugins/novatel/mm-broadband-bearer-novatel-lte.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/plugins/novatel/mm-broadband-bearer-novatel-lte.c b/plugins/novatel/mm-broadband-bearer-novatel-lte.c
index e06a6bec..51e3f645 100644
--- a/plugins/novatel/mm-broadband-bearer-novatel-lte.c
+++ b/plugins/novatel/mm-broadband-bearer-novatel-lte.c
@@ -87,10 +87,15 @@ load_connection_status_finish (MMBaseBearer *bearer,
GAsyncResult *res,
GError **error)
{
+ GError *inner_error = NULL;
gssize value;
- value = g_task_propagate_int (G_TASK (res), error);
- return (value < 0 ? MM_BEARER_CONNECTION_STATUS_UNKNOWN : (MMBearerConnectionStatus) value);
+ value = g_task_propagate_int (G_TASK (res), &inner_error);
+ if (inner_error) {
+ g_propagate_error (error, inner_error);
+ return MM_BEARER_CONNECTION_STATUS_UNKNOWN;
+ }
+ return (MMBearerConnectionStatus)value;
}
static void