]> 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>
Mon, 5 Nov 2018 07:48:07 +0000 (08:48 +0100)
Found with -Werror=missing-prototypes

codegen/valagtypemodule.vala

index 6b60f7ef3ffa6ec2dce7e499fff38fa0cda1413b..dcc51a1070ee63d554c8777c81223e8b02c23d8f 100644 (file)
@@ -1788,7 +1788,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;
@@ -1836,6 +1836,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)));
@@ -1843,9 +1844,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) {