]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Use g_free as default free function for nullable value types
authorJuerg Billeter <j@bitron.ch>
Sun, 18 May 2008 18:36:36 +0000 (18:36 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Sun, 18 May 2008 18:36:36 +0000 (18:36 +0000)
2008-05-18  Juerg Billeter  <j@bitron.ch>

* gobject/valaccodegenerator.vala:

Use g_free as default free function for nullable value types

svn path=/trunk/; revision=1400

ChangeLog
gobject/valaccodegenerator.vala

index 01498eb8751a987f9529a7a7a9810a94b02ea936..2688505ee9915937bc8a74a8bc4bcacb4171edca 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-05-18  Jürg Billeter  <j@bitron.ch>
+
+       * gobject/valaccodegenerator.vala:
+
+       Use g_free as default free function for nullable value types
+
 2008-05-18  Jürg Billeter  <j@bitron.ch>
 
        * vala/valadatatype.vala:
index dae072e0f2de50e533a7a175b2c3b9462a4ab410..70f1ca9dda2757db34f06324bfa97a1d362e63af 100644 (file)
@@ -1306,10 +1306,19 @@ public class Vala.CCodeGenerator : CodeGenerator {
                        }
                } else if (type.data_type != null) {
                        string unref_function;
-                       if (type.data_type.is_reference_counting ()) {
-                               unref_function = type.data_type.get_unref_function ();
+                       if (type is ReferenceType) {
+                               if (type.data_type.is_reference_counting ()) {
+                                       unref_function = type.data_type.get_unref_function ();
+                               } else {
+                                       unref_function = type.data_type.get_free_function ();
+                               }
                        } else {
-                               unref_function = type.data_type.get_free_function ();
+                               if (type.nullable) {
+                                       unref_function = type.data_type.get_free_function ();
+                                       if (unref_function == null) {
+                                               unref_function = "g_free";
+                                       }
+                               }
                        }
                        if (unref_function == null) {
                                return new CCodeConstant ("NULL");