]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Don't emit *_free() of derived compact classes
authorRico Tzschichholz <ricotz@ubuntu.com>
Sun, 4 Nov 2018 21:49:04 +0000 (22:49 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Sun, 4 Nov 2018 21:49:04 +0000 (22:49 +0100)
Found with -Werror=missing-prototypes

codegen/valagtypemodule.vala

index 19eb85971200d82ca03b5b54fa703c93a7a93a23..99f38452a9458348722411c635bb548ce725e61d 100644 (file)
@@ -1808,7 +1808,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;
@@ -1856,6 +1856,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)));
@@ -1863,9 +1864,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 CCodeExpression get_param_spec_cexpression (Property prop) {