]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Copy types in transformer
authorLuca Bruno <lucabru@src.gnome.org>
Sat, 18 May 2013 10:39:22 +0000 (12:39 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Mon, 11 Mar 2019 12:52:38 +0000 (13:52 +0100)
codegen/valaccodetransformer.vala
codegen/valagdbusclienttransformer.vala
codegen/valagdbusservertransformer.vala

index bd64fb0308255cde202ef963fee3dc4636264e84..6473a99ca1cd24cac5eae78b4d3376aa7ae05edd 100644 (file)
@@ -374,10 +374,10 @@ public class Vala.CCodeTransformer : CodeTransformer {
                                push_builder (new CodeBuilder (context, expr.parent_statement, expr.source_reference));
 
                                // FIXME: use create_temp_access behavior
-                               var replacement = expression (b.add_temp_declaration (expr.value_type, expr, true));
+                               var replacement = expression (b.add_temp_declaration (expr.value_type.copy (), expr, true));
 
-                               replacement.target_type = target_type;
-                               replacement.formal_target_type = formal_target_type;
+                               replacement.target_type = target_type.copy ();
+                               replacement.formal_target_type = formal_target_type.copy ();
                                context.analyzer.replaced_nodes.add (expr);
                                old_parent_node.replace_expression (expr, replacement);
                                b.check (this);
index 180e80e955f652d082563f3a285459707824f85d..93ce6dff86e3d47cba868acc8d49305a5a8d177a 100644 (file)
@@ -145,7 +145,7 @@ public class Vala.GDBusClientTransformer : GVariantTransformer {
        }
 
        void generate_dbus_proxy_method (Class proxy_class, Interface iface, Method m) {
-               var proxy = new Method (m.name, m.return_type, m.source_reference);
+               var proxy = new Method (m.name, m.return_type.copy(), m.source_reference);
                foreach (var param in m.get_parameters ()) {
                        proxy.add_parameter (param.copy ());
                }
@@ -208,7 +208,7 @@ public class Vala.GDBusClientTransformer : GVariantTransformer {
 
        void generate_dbus_proxy_signals (Class proxy_class, ObjectTypeSymbol sym) {
                var g_signal = (Signal) symbol_from_string ("GLib.DBusProxy.g_signal");
-               var m = new Method ("g_signal", g_signal.return_type, sym.source_reference);
+               var m = new Method ("g_signal", g_signal.return_type.copy(), sym.source_reference);
                m.overrides = true;
                m.access = SymbolAccessibility.PUBLIC;
                foreach (var param in g_signal.get_parameters ()) {
@@ -359,7 +359,7 @@ public class Vala.GDBusClientTransformer : GVariantTransformer {
                foreach (var param in m.get_parameters ()) {
                        cache_key = "%s %s".printf (cache_key, param.variable_type.to_string ());
                }
-               if (!wrapper_method (m.return_type, cache_key, out wrapper, symbol_from_string ("GLib.DBusProxy"))) {
+               if (!wrapper_method (m.return_type.copy(), cache_key, out wrapper, symbol_from_string ("GLib.DBusProxy"))) {
                        foreach (var param in m.get_parameters ()) {
                                wrapper.add_parameter (param.copy ());
                        }
index 223663eb5cc59acdf4f6b224f917f89a5886d1da..570c744e14d8f653613ee60f55d3e663bed1f876 100644 (file)
@@ -94,7 +94,7 @@ public class Vala.GDBusServerTransformer : GDBusClientTransformer {
                                }
                                var arg = b.add_temp_declaration (copy_type (param.variable_type, true));
                                out_args += arg;
-                               out_types += param.variable_type;
+                               out_types += param.variable_type.copy ();
                                finish_call.add_argument (new UnaryExpression (UnaryOperator.OUT, expression (arg), m.source_reference));
                                if (m.coroutine) {
                                        pop_builder ();
@@ -128,7 +128,7 @@ public class Vala.GDBusServerTransformer : GDBusClientTransformer {
                        write_dbus_value (out_types[i], builder, out_args[i], ref fd_list);
                }
                if (result != null) {
-                       write_dbus_value (m.return_type, builder, result, ref fd_list);
+                       write_dbus_value (m.return_type.copy (), builder, result, ref fd_list);
                }
                b.add_expression (expression (@"$reply.set_body ($builder.end ())"));
                if (fd_list != null) {