[PATCH 1/2] broadband-bearer: check error returned by g_task_propagate_error instead
Ben Chan
benchan at chromium.org
Thu Jul 6 18:30:20 UTC 2017
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.
---
src/mm-broadband-bearer.c | 9 +++++++--
1 file 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
--
2.13.2.725.g09c95d1e9-goog
More information about the ModemManager-devel
mailing list