]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Don't hardcode C identifiers in return_out_parameter
authorLuca Bruno <lucabru@src.gnome.org>
Tue, 17 May 2011 15:07:12 +0000 (17:07 +0200)
committerLuca Bruno <lucabru@src.gnome.org>
Tue, 17 May 2011 15:34:48 +0000 (17:34 +0200)
codegen/valaccodebasemodule.vala

index c33ccfe1bb9fb147746efe5800c5f8a14f311ab1..09dad443f171dfb46d2c6d4aebc37dcc76d692b8 100644 (file)
@@ -3139,13 +3139,15 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
        void return_out_parameter (Parameter param) {
                var delegate_type = param.variable_type as DelegateType;
 
+               var value = load_parameter (param);
+
                ccode.open_if (get_variable_cexpression (param.name));
-               ccode.add_assignment (new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, get_variable_cexpression (param.name)), get_variable_cexpression ("_" + param.name));
+               ccode.add_assignment (new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, get_variable_cexpression (param.name)), get_cvalue_ (value));
 
                if (delegate_type != null && delegate_type.delegate_symbol.has_target) {
-                       ccode.add_assignment (new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, get_variable_cexpression (get_delegate_target_cname (param.name))), new CCodeIdentifier (get_delegate_target_cname (get_variable_cname ("_" + param.name))));
+                       ccode.add_assignment (new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, get_variable_cexpression (get_delegate_target_cname (param.name))), get_delegate_target_cvalue (value));
                        if (delegate_type.value_owned) {
-                               ccode.add_assignment (new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, get_variable_cexpression (get_delegate_target_destroy_notify_cname (param.name))), new CCodeIdentifier (get_delegate_target_destroy_notify_cname (get_variable_cname ("_" + param.name))));
+                               ccode.add_assignment (new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, get_variable_cexpression (get_delegate_target_destroy_notify_cname (param.name))), get_delegate_target_destroy_notify_cvalue (get_parameter_cvalue (param)));
                        }
                }
 
@@ -3159,7 +3161,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                if (array_type != null && !array_type.fixed_length && !param.no_array_length) {
                        for (int dim = 1; dim <= array_type.rank; dim++) {
                                ccode.open_if (get_variable_cexpression (get_parameter_array_length_cname (param, dim)));
-                               ccode.add_assignment (new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, get_variable_cexpression (get_parameter_array_length_cname (param, dim))), new CCodeIdentifier (get_array_length_cname (get_variable_cname ("_" + param.name), dim)));
+                               ccode.add_assignment (new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, get_variable_cexpression (get_parameter_array_length_cname (param, dim))), get_array_length_cvalue (value));
                                ccode.close ();
                        }
                }