From 0ed8cad121792c05c28b3a6555aade8d4fddd3e0 Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Sun, 10 Mar 2019 21:51:02 +0100 Subject: [PATCH] codegen: Don't create special GArray clear-func for non-null structs Based on patch by Jakub Kaszycki --- codegen/valaccodebasemodule.vala | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 1980d7b59..0a46bd9ad 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -5125,10 +5125,15 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { if (cl == garray_type) { var type_arg = expr.type_reference.get_type_arguments ().get (0); if (requires_destroy (type_arg)) { - var free_wrapper = generate_destroy_function_content_of_wrapper (type_arg); var clear_func = new CCodeFunctionCall (new CCodeIdentifier ("g_array_set_clear_func")); clear_func.add_argument (get_cvalue_ (expr.target_value)); - clear_func.add_argument (new CCodeIdentifier (free_wrapper)); + string destroy_func; + if (type_arg.is_non_null_simple_type () || type_arg.is_real_non_null_struct_type ()) { + destroy_func = get_ccode_destroy_function (type_arg.data_type); + } else { + destroy_func = generate_destroy_function_content_of_wrapper (type_arg); + } + clear_func.add_argument (new CCodeCastExpression (new CCodeIdentifier (destroy_func), "GDestroyNotify")); ccode.add_expression (clear_func); } } -- 2.47.2