Fix crash when using abstract properties
authorJuerg Billeter <j@bitron.ch>
Sat, 26 Apr 2008 20:33:19 +0000 (20:33 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Sat, 26 Apr 2008 20:33:19 +0000 (20:33 +0000)
2008-04-26  Juerg Billeter  <j@bitron.ch>

* gobject/valaccodegenerator.vala:

Fix crash when using abstract properties

svn path=/trunk/; revision=1325

ChangeLog
gobject/valaccodegenerator.vala

index a6aff41..dddb314 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2008-04-26  Jürg Billeter  <j@bitron.ch>
 
+       * gobject/valaccodegenerator.vala:
+
+       Fix crash when using abstract properties
+
+2008-04-26  Jürg Billeter  <j@bitron.ch>
+
        * compiler/valacompiler.vala:
 
        Build executable by default
index bed640a..5072fc8 100644 (file)
@@ -778,6 +778,9 @@ public class Vala.CCodeGenerator : CodeGenerator {
                        this_type = new InterfaceInstanceType ((Interface) t);
                }
                var cselfparam = new CCodeFormalParameter ("self", this_type.get_cname ());
+               var value_type = prop.type_reference.copy ();
+               value_type.takes_ownership = value_type.transfers_ownership;
+               var cvalueparam = new CCodeFormalParameter ("value", value_type.get_cname ());
 
                if (prop.is_abstract || prop.is_virtual) {
                        if (acc.readable) {
@@ -787,7 +790,6 @@ public class Vala.CCodeGenerator : CodeGenerator {
                        }
                        function.add_parameter (cselfparam);
                        if (acc.writable || acc.construction) {
-                               var cvalueparam = new CCodeFormalParameter ("value", acc.value_parameter.type_reference.get_cname ());
                                function.add_parameter (cvalueparam);
                        }
                        
@@ -882,7 +884,6 @@ public class Vala.CCodeGenerator : CodeGenerator {
                                function.add_parameter (coutparam);
                        } else {
                                if (acc.writable || acc.construction) {
-                                       var cvalueparam = new CCodeFormalParameter ("value", acc.value_parameter.type_reference.get_cname ());
                                        function.add_parameter (cvalueparam);
                                }
                        }