]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Free errors after returning them on the GDBusMethodInvocation
authorCarlos Garnacho <carlosg@gnome.org>
Tue, 31 Jul 2018 22:29:27 +0000 (00:29 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Wed, 1 Aug 2018 06:02:53 +0000 (08:02 +0200)
Those are being leaked otherwise.

Fixes https://gitlab.gnome.org/GNOME/vala/issues/657

codegen/valagdbusservermodule.vala

index 3506bc655e245cd9a1ec62c53b8c95ce5eb9b35a..e1984e24f796ee27431be86765e8c41eef77f93c 100644 (file)
@@ -180,6 +180,10 @@ public class Vala.GDBusServerModule : GDBusClientModule {
                                        return_error.add_argument (new CCodeIdentifier ("error"));
                                        ccode.add_expression (return_error);
 
+                                       var free_error = new CCodeFunctionCall (new CCodeIdentifier ("g_error_free"));
+                                       free_error.add_argument (new CCodeIdentifier ("error"));
+                                       ccode.add_expression (free_error);
+
                                        if (need_goto_label || requires_destroy (owned_type)) {
                                                ccode.add_goto ("_error");
                                                need_goto_label = true;
@@ -289,6 +293,10 @@ public class Vala.GDBusServerModule : GDBusClientModule {
                                return_error.add_argument (new CCodeIdentifier ("error"));
                                ccode.add_expression (return_error);
 
+                               var free_error = new CCodeFunctionCall (new CCodeIdentifier ("g_error_free"));
+                               free_error.add_argument (new CCodeIdentifier ("error"));
+                               ccode.add_expression (free_error);
+
                                if (need_goto_label) {
                                        ccode.add_goto ("_error");
                                } else {