From 1383402ee5e0c20f1374f12488e1c73a5aafc81b Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Thu, 4 Feb 2021 10:55:31 +0100 Subject: codegen: Chain up to base struct destroy function Found by -fsanitize=address --- codegen/valaccodestructmodule.vala | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'codegen/valaccodestructmodule.vala') diff --git a/codegen/valaccodestructmodule.vala b/codegen/valaccodestructmodule.vala index 585d460db..5dfc8e8cb 100644 --- a/codegen/valaccodestructmodule.vala +++ b/codegen/valaccodestructmodule.vala @@ -330,6 +330,20 @@ public abstract class Vala.CCodeStructModule : CCodeBaseModule { } void add_struct_destroy_function (Struct st) { + unowned Struct sym = st; + while (sym.base_struct != null) { + sym = sym.base_struct; + } + if (st != sym) { + push_context (instance_finalize_context); + + var destroy_func = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_destroy_function (sym))); + destroy_func.add_argument (new CCodeIdentifier ("self")); + ccode.add_expression (destroy_func); + + pop_context (); + } + cfile.add_function (instance_finalize_context.ccode); } } -- cgit v1.2.1