From 9688b0cb93e9ae063685678387d54e7ee8096c2a Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Sun, 19 May 2024 19:06:12 +0200 Subject: [PATCH] codegen: Fix conditional expression with only one void side Found by -pedantic-errors --- codegen/valaccodebasemodule.vala | 15 ++++++++------- tests/basic-types/glists.c-expected | 4 ++-- tests/generics/bug694765-2.c-expected | 4 ++-- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index ae812ad73..0c4c20358 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 fc8fabfea..212e9ac42 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 091678851..ee60e3ae8 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); } -- 2.47.3