From: Rico Tzschichholz Date: Sun, 19 May 2024 17:06:12 +0000 (+0200) Subject: codegen: Fix conditional expression with only one void side X-Git-Tag: 0.56.18~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f9877bf7216ed2532e1bc1e87de16db08bf5bf1e;p=thirdparty%2Fvala.git codegen: Fix conditional expression with only one void side Found by -pedantic-errors --- diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 54be320a4..f3eb3fa7d 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -3686,9 +3686,10 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { free_call.add_argument (new CCodeMemberAccess.pointer (new CCodeIdentifier("node"), "data")); var data_isnull = new CCodeBinaryExpression (CCodeBinaryOperator.EQUALITY, new CCodeMemberAccess.pointer (new CCodeIdentifier("node"), "data"), new CCodeConstant ("NULL")); - var ccomma_data = new CCodeCommaExpression (); - ccomma_data.append_expression (new CCodeConditionalExpression (data_isnull, new CCodeConstant ("NULL"), free_call)); - ccode.add_expression (ccomma_data); + var ccomma_free = new CCodeCommaExpression (); + ccomma_free.append_expression (free_call); + ccomma_free.append_expression (new CCodeConstant ("NULL")); + ccode.add_expression (new CCodeConditionalExpression (data_isnull, new CCodeConstant ("NULL"), ccomma_free)); ccode.add_return (new CCodeConstant ("FALSE")); @@ -3706,10 +3707,10 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { element_free_call.add_argument (new CCodeIdentifier ("free_func")); var free_func_isnull = new CCodeBinaryExpression (CCodeBinaryOperator.EQUALITY, new CCodeIdentifier ("free_func"), new CCodeConstant ("NULL")); - var ccomma = new CCodeCommaExpression (); - ccomma.append_expression (new CCodeConditionalExpression (free_func_isnull, new CCodeConstant ("NULL"), element_free_call)); - - ccode.add_expression (ccomma); + var ccomma_element_free = new CCodeCommaExpression (); + ccomma_element_free.append_expression (element_free_call); + ccomma_element_free.append_expression (new CCodeConstant ("NULL")); + ccode.add_expression (new CCodeConditionalExpression (free_func_isnull, new CCodeConstant ("NULL"), ccomma_element_free)); var cfreecall = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_free_function (gnode_type))); cfreecall.add_argument (new CCodeIdentifier ("self")); diff --git a/tests/basic-types/glists.c-expected b/tests/basic-types/glists.c-expected index 7f272b969..3aa60471a 100644 --- a/tests/basic-types/glists.c-expected +++ b/tests/basic-types/glists.c-expected @@ -216,7 +216,7 @@ static gboolean _g_node_free_all_node (GNode* node, GDestroyNotify free_func) { - (node->data == NULL) ? NULL : free_func (node->data); + (node->data == NULL) ? NULL : (free_func (node->data), NULL); return FALSE; } @@ -224,7 +224,7 @@ static void _g_node_free_all (GNode* self, GDestroyNotify free_func) { - (free_func == NULL) ? NULL : g_node_traverse (self, G_POST_ORDER, G_TRAVERSE_ALL, -1, (GNodeTraverseFunc) _g_node_free_all_node, free_func); + (free_func == NULL) ? NULL : (g_node_traverse (self, G_POST_ORDER, G_TRAVERSE_ALL, -1, (GNodeTraverseFunc) _g_node_free_all_node, free_func), NULL); g_node_destroy (self); } diff --git a/tests/generics/bug694765-2.c-expected b/tests/generics/bug694765-2.c-expected index 4444fdc49..0bc7ed592 100644 --- a/tests/generics/bug694765-2.c-expected +++ b/tests/generics/bug694765-2.c-expected @@ -400,7 +400,7 @@ static gboolean _g_node_free_all_node (GNode* node, GDestroyNotify free_func) { - (node->data == NULL) ? NULL : free_func (node->data); + (node->data == NULL) ? NULL : (free_func (node->data), NULL); return FALSE; } @@ -408,7 +408,7 @@ static void _g_node_free_all (GNode* self, GDestroyNotify free_func) { - (free_func == NULL) ? NULL : g_node_traverse (self, G_POST_ORDER, G_TRAVERSE_ALL, -1, (GNodeTraverseFunc) _g_node_free_all_node, free_func); + (free_func == NULL) ? NULL : (g_node_traverse (self, G_POST_ORDER, G_TRAVERSE_ALL, -1, (GNodeTraverseFunc) _g_node_free_all_node, free_func), NULL); g_node_destroy (self); }