diff options
author | Ben Chan <benchan@chromium.org> | 2017-07-06 11:30:20 -0700 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2017-07-07 10:23:46 +0200 |
commit | a36347eff794bb5d8c1b4e641a56aa70d7a0ef8c (patch) | |
tree | dfd835eb00f17e5e99ff16f11abd747cbddae535 | |
parent | 22e5b216cb312f35a51939bf6922a23e488f9a32 (diff) |
broadband-bearer: 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-- | src/mm-broadband-bearer.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/mm-broadband-bearer.c b/src/mm-broadband-bearer.c index ac701733..696f9bfd 100644 --- a/src/mm-broadband-bearer.c +++ b/src/mm-broadband-bearer.c @@ -1995,10 +1995,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 |