From: Rico Tzschichholz Date: Sat, 5 Jan 2019 17:11:30 +0000 (+0100) Subject: codegen: Don't check boolean values for (in)equality in GTask API X-Git-Tag: 0.42.5~25 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f01ca3104788670512c7787dfc834cfb2d56f129;p=thirdparty%2Fvala.git codegen: Don't check boolean values for (in)equality in GTask API This resolves any value but 0 to true as it is suppose to be. /* invalid */ if (condition == TRUE) do_foo (); /* valid */ if (another_condition) do_bar (); See https://gitlab.gnome.org/GNOME/glib/issues/1636 --- diff --git a/codegen/valaccodemethodmodule.vala b/codegen/valaccodemethodmodule.vala index 2d8bf9e3b..23113c3c7 100644 --- a/codegen/valaccodemethodmodule.vala +++ b/codegen/valaccodemethodmodule.vala @@ -139,15 +139,15 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule { var state_is_not_zero = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, state, zero); ccode.open_if (state_is_not_zero); - CCodeBinaryExpression task_is_complete; + CCodeExpression task_is_complete; if (context.require_glib_version (2, 44)) { var task_complete = new CCodeFunctionCall (new CCodeIdentifier ("g_task_get_completed")); task_complete.add_argument (async_result_expr); - task_is_complete = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, task_complete, new CCodeConstant ("TRUE")); + task_is_complete = new CCodeUnaryExpression (CCodeUnaryOperator.LOGICAL_NEGATION, task_complete); } else { var task_complete = new CCodeMemberAccess.pointer (data_var, "_task_complete_"); - task_is_complete = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, task_complete, new CCodeConstant ("TRUE")); + task_is_complete = new CCodeUnaryExpression (CCodeUnaryOperator.LOGICAL_NEGATION, task_complete); } ccode.open_while (task_is_complete);