From d308bbf4c6d9cfbf59c257e5a4c802cba9065906 Mon Sep 17 00:00:00 2001 From: Ben Chan Date: Thu, 6 Jul 2017 12:34:53 -0700 Subject: [PATCH] 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. --- plugins/novatel/mm-broadband-bearer-novatel-lte.c | 9 +++++++-- 1 file 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