[vala/0.36] codegen: Don't emit *_free() of derived compact classes



commit ad2e2243f7a76dd566b4cad6a0ad26d45e78873b
Author: Rico Tzschichholz <ricotz ubuntu com>
Date:   Sun Nov 4 22:49:04 2018 +0100

    codegen: Don't emit *_free() of derived compact classes
    
    Found with -Werror=missing-prototypes

 codegen/valagtypemodule.vala | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
---
diff --git a/codegen/valagtypemodule.vala b/codegen/valagtypemodule.vala
index 6d34f8882..dba7c5f2b 100644
--- a/codegen/valagtypemodule.vala
+++ b/codegen/valagtypemodule.vala
@@ -1658,7 +1658,7 @@ public class Vala.GTypeModule : GErrorModule {
                                call.add_argument (new CCodeIdentifier ("self"));
                                ccode.add_expression (call);
                        }
-               } else {
+               } else if (cl.base_class == null) {
                        var function = new CCodeFunction ("%sfree".printf (get_ccode_lower_case_prefix (cl)), 
"void");
                        if (cl.is_private_symbol ()) {
                                function.modifiers = CCodeModifiers.STATIC;
@@ -1706,6 +1706,7 @@ public class Vala.GTypeModule : GErrorModule {
                        }
 
                        cfile.add_function_declaration (instance_finalize_context.ccode);
+                       cfile.add_function (instance_finalize_context.ccode);
                } else if (cl.base_class == null) {
                        var ccall = new CCodeFunctionCall (new CCodeIdentifier ("g_slice_free"));
                        ccall.add_argument (new CCodeIdentifier (get_ccode_name (cl)));
@@ -1713,9 +1714,11 @@ public class Vala.GTypeModule : GErrorModule {
                        push_context (instance_finalize_context);
                        ccode.add_expression (ccall);
                        pop_context ();
-               }
 
-               cfile.add_function (instance_finalize_context.ccode);
+                       cfile.add_function (instance_finalize_context.ccode);
+               } else if (cl.base_class == gsource_type) {
+                       cfile.add_function (instance_finalize_context.ccode);
+               }
        }
 
        public override CCodeFunctionCall get_param_spec (Property prop) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]