From 627ef274dff34f8e47425529cb3a7534dd47563f Mon Sep 17 00:00:00 2001 From: Ben Chan Date: Thu, 6 Jul 2017 11:30:21 -0700 Subject: [PATCH] plugin: check error returned by g_task_propagate_error instead mm_plugin_supports_port_finish directly casts the value returned by g_task_propagate_int to MMPluginSupportsResult enum value, which implicitly assumes MM_PLUGIN_SUPPORTS_PORT_UNKNOWN equals to -1. Instead of relying on such an implicit assumption, this patch modifies the code to check if the GError argument to g_task_propagate_error is populated instead. --- src/mm-plugin.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/mm-plugin.c b/src/mm-plugin.c index af4bc739..d2fa4a11 100644 --- a/src/mm-plugin.c +++ b/src/mm-plugin.c @@ -666,10 +666,18 @@ mm_plugin_supports_port_finish (MMPlugin *self, GAsyncResult *result, GError **error) { + GError *inner_error = NULL; + gssize value; + g_return_val_if_fail (MM_IS_PLUGIN (self), MM_PLUGIN_SUPPORTS_PORT_UNKNOWN); g_return_val_if_fail (G_IS_TASK (result), MM_PLUGIN_SUPPORTS_PORT_UNKNOWN); - return (MMPluginSupportsResult) g_task_propagate_int (G_TASK (result), error); + value = g_task_propagate_int (G_TASK (result), &inner_error); + if (inner_error) { + g_propagate_error (error, inner_error); + return MM_PLUGIN_SUPPORTS_PORT_UNKNOWN; + } + return (MMPluginSupportsResult)value; } void