From 105f1c3258fd896fdbaa462a836283d3a3dd06a6 Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Tue, 2 Feb 2021 10:34:54 +0100 Subject: [PATCH] codegen: Don't leak array memory after it was implicitly copied Found by -fsanitize=address --- codegen/valaccodebasemodule.vala | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 61e831ff9..cb4550942 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -6154,6 +6154,11 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { Report.error (node.source_reference, "missing class prerequisite for interface `%s', add GLib.Object to interface declaration if unsure", target_type.type_symbol.get_full_name ()); return result; } + // need to free old array after copying it + if (array_needs_copy && requires_destroy (type)) { + result.value_type = type.copy (); + ccode.add_expression (destroy_value (result)); + } result = copy; // implicit array copying is deprecated, but allow it for internal codegen usage -- 2.47.3