From c44dc6655bb596719ebee202b86b0de9483f47f8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=BCrg=20Billeter?= Date: Tue, 20 Mar 2007 13:53:35 +0000 Subject: [PATCH] free lists of interfaces correctly, patch by Mathias Hasselmann MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 2007-03-20 Jürg Billeter * vala/valacodegenerator.vala: free lists of interfaces correctly, patch by Mathias Hasselmann svn path=/trunk/; revision=244 --- vala/ChangeLog | 5 +++++ vala/vala/valacodegenerator.vala | 12 +++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/vala/ChangeLog b/vala/ChangeLog index f95dd5ad2..b2e3e870d 100644 --- a/vala/ChangeLog +++ b/vala/ChangeLog @@ -1,3 +1,8 @@ +2007-03-20 Jürg Billeter + + * vala/valacodegenerator.vala: free lists of interfaces correctly, patch + by Mathias Hasselmann + 2007-03-17 Jürg Billeter * compiler/valacompiler.vala, compiler/Makefile.am, vapi/config.vala: diff --git a/vala/vala/valacodegenerator.vala b/vala/vala/valacodegenerator.vala index 3908e06cd..5f22c6783 100644 --- a/vala/vala/valacodegenerator.vala +++ b/vala/vala/valacodegenerator.vala @@ -2152,16 +2152,18 @@ public class Vala.CodeGenerator : CodeVisitor { if (unref_function == "g_list_free") { bool is_ref = false; bool is_class = false; - var type_args = type.get_type_arguments (); - foreach (TypeReference type_arg in type_args) { - is_ref = type_arg.takes_ownership; - is_class = type_arg.data_type is Class; + bool is_interface = false; + + foreach (TypeReference type_arg in type.get_type_arguments ()) { + is_ref |= type_arg.takes_ownership; + is_class |= type_arg.data_type is Class; + is_interface |= type_arg.data_type is Interface; } if (is_ref) { var cunrefcall = new CCodeFunctionCall (new CCodeIdentifier ("g_list_foreach")); cunrefcall.add_argument (cvar); - if (is_class) { + if (is_class || is_interface) { cunrefcall.add_argument (new CCodeIdentifier ("(GFunc) g_object_unref")); } else { cunrefcall.add_argument (new CCodeIdentifier ("(GFunc) g_free")); -- 2.47.3