]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Save some block data members for captured parameters
authorLuca Bruno <lucabru@src.gnome.org>
Sun, 8 May 2011 06:54:39 +0000 (08:54 +0200)
committerLuca Bruno <lucabru@src.gnome.org>
Sun, 8 May 2011 07:13:18 +0000 (09:13 +0200)
codegen/valaccodebasemodule.vala

index 842a274b3c9ad65ab3e8064a83031316034151ef..d804b390afeeb0792689e86bd6f9990ed487ac73 100644 (file)
@@ -1643,12 +1643,14 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                        value = copy_value (value, param);
                }
 
-               if (param.variable_type is ArrayType) {
-                       var array_type = (ArrayType) param.variable_type;
+               var array_type = param.variable_type as ArrayType;
+               var deleg_type = param.variable_type as DelegateType;
+
+               if (array_type != null && !param.no_array_length) {
                        for (int dim = 1; dim <= array_type.rank; dim++) {
                                data.add_field ("gint", get_parameter_array_length_cname (param, dim));
                        }
-               } else if (param.variable_type is DelegateType) {
+               } else if (deleg_type != null && deleg_type.delegate_symbol.has_target) {
                        data.add_field ("gpointer", get_delegate_target_cname (get_variable_cname (param.name)));
                        if (param.variable_type.value_owned) {
                                data.add_field ("GDestroyNotify", get_delegate_target_destroy_notify_cname (get_variable_cname (param.name)));