]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: G_DEFINE_AUTOPTR_CLEANUP_FUNC must not declared more than once
authorRico Tzschichholz <ricotz@ubuntu.com>
Sun, 3 Nov 2019 15:34:47 +0000 (16:34 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Sun, 3 Nov 2019 15:55:52 +0000 (16:55 +0100)
Follow on f413cb32470d9c2598416772bc0166c6f974ec9f

codegen/valagtypemodule.vala

index bae49b2c5729060e8f768836f03a95c14f81583e..51e69c3d7e1f33f9a1805d1bbb0fe8493c20662b 100644 (file)
@@ -197,7 +197,8 @@ public class Vala.GTypeModule : GErrorModule {
                }
                // Custom unref-methods need to be emitted before G_DEFINE_AUTOPTR_CLEANUP_FUNC,
                // so we guard against that special case and handle it in generate_method_declaration.
-               if (!(base_class.is_compact && is_reference_counting (base_class))) {
+               if (!(base_class.is_compact && is_reference_counting (base_class))
+                   && (!context.use_header || decl_space.is_header)) {
                        string autoptr_cleanup_func;
                        if (is_reference_counting (base_class)) {
                                autoptr_cleanup_func = get_ccode_unref_function (base_class);
@@ -450,7 +451,8 @@ public class Vala.GTypeModule : GErrorModule {
                        // Custom unref-methods need to be emitted before G_DEFINE_AUTOPTR_CLEANUP_FUNC,
                        // in addition to the non-ref-countable case in generate_class_declaration.
                        unowned Class? cl = m.parent_symbol as Class;
-                       if (cl != null && cl.is_compact && get_ccode_unref_function (cl) == get_ccode_name (m)) {
+                       if (cl != null && cl.is_compact && get_ccode_unref_function (cl) == get_ccode_name (m)
+                           && (!context.use_header || decl_space.is_header)) {
                                decl_space.add_type_member_declaration (new CCodeIdentifier ("G_DEFINE_AUTOPTR_CLEANUP_FUNC (%s, %s)".printf (get_ccode_name (cl), get_ccode_name (m))));
                                decl_space.add_type_member_declaration (new CCodeNewline ());
                        }