summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--codegen/valaccodearraymodule.vala26
-rw-r--r--codegen/valaccodecontrolflowmodule.vala2
-rw-r--r--codegen/valadbusclientmodule.vala2
-rw-r--r--codegen/valadbusservermodule.vala12
-rw-r--r--codegen/valagdbusclientmodule.vala2
-rw-r--r--codegen/valagdbusservermodule.vala10
6 files changed, 30 insertions, 24 deletions
diff --git a/codegen/valaccodearraymodule.vala b/codegen/valaccodearraymodule.vala
index e57793eea..4e938f6c4 100644
--- a/codegen/valaccodearraymodule.vala
+++ b/codegen/valaccodearraymodule.vala
@@ -154,31 +154,9 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
}
}
- bool is_out = false;
-
- if (array_expr is UnaryExpression) {
- var unary_expr = (UnaryExpression) array_expr;
- if (unary_expr.operator == UnaryOperator.OUT || unary_expr.operator == UnaryOperator.REF) {
- is_out = true;
- }
- }
-
List<CCodeExpression> size = get_array_sizes (array_expr);
- if (size != null && size.size >= dim) {
- return size[dim - 1];
- }
-
- if (!is_out) {
- /* allow arrays with unknown length even for value types
- * as else it may be impossible to bind some libraries
- * users of affected libraries should explicitly set
- * the array length as early as possible
- * by setting the virtual length field of the array
- */
- return new CCodeConstant ("-1");
- } else {
- return new CCodeConstant ("NULL");
- }
+ assert (size != null && size.size >= dim);
+ return size[dim - 1];
}
public override string get_array_size_cname (string array_cname) {
diff --git a/codegen/valaccodecontrolflowmodule.vala b/codegen/valaccodecontrolflowmodule.vala
index 46a4b4397..c94008832 100644
--- a/codegen/valaccodecontrolflowmodule.vala
+++ b/codegen/valaccodecontrolflowmodule.vala
@@ -371,6 +371,8 @@ public class Vala.CCodeControlFlowModule : CCodeMethodModule {
if (requires_destroy (local.variable_type)) {
var ma = new MemberAccess.simple (local.name);
ma.symbol_reference = local;
+ ma.value_type = local.variable_type.copy ();
+ visit_member_access (ma);
ccode.add_expression (get_unref_expression (get_variable_cexpression (local.name), local.variable_type, ma));
}
}
diff --git a/codegen/valadbusclientmodule.vala b/codegen/valadbusclientmodule.vala
index 3e3abe3ad..1666a7abd 100644
--- a/codegen/valadbusclientmodule.vala
+++ b/codegen/valadbusclientmodule.vala
@@ -1581,6 +1581,8 @@ public class Vala.DBusClientModule : DBusModule {
var local = new LocalVariable (owned_type, param.name);
var ma = new MemberAccess.simple (param.name);
ma.symbol_reference = local;
+ ma.value_type = owned_type.copy ();
+ visit_member_access (ma);
var stmt = new CCodeExpressionStatement (get_unref_expression (new CCodeIdentifier (param.name), owned_type, ma));
postfragment.append (stmt);
}
diff --git a/codegen/valadbusservermodule.vala b/codegen/valadbusservermodule.vala
index edf5e5a79..9476d510d 100644
--- a/codegen/valadbusservermodule.vala
+++ b/codegen/valadbusservermodule.vala
@@ -254,6 +254,8 @@ public class Vala.DBusServerModule : DBusClientModule {
var local = new LocalVariable (owned_type, param.name);
var ma = new MemberAccess.simple (param.name);
ma.symbol_reference = local;
+ ma.value_type = owned_type.copy ();
+ visit_member_access (ma);
var stmt = new CCodeExpressionStatement (get_unref_expression (new CCodeIdentifier (param.name), owned_type, ma));
if (param.direction == ParameterDirection.IN) {
in_postfragment.append (stmt);
@@ -288,6 +290,8 @@ public class Vala.DBusServerModule : DBusClientModule {
var local = new LocalVariable (m.return_type, " result");
var ma = new MemberAccess.simple ("result");
ma.symbol_reference = local;
+ ma.value_type = m.return_type.copy ();
+ visit_member_access (ma);
out_postfragment.append (new CCodeExpressionStatement (get_unref_expression (new CCodeIdentifier ("result"), m.return_type, ma)));
}
@@ -332,6 +336,8 @@ public class Vala.DBusServerModule : DBusClientModule {
var local = new LocalVariable (m.return_type, " result");
var ma = new MemberAccess.simple ("result");
ma.symbol_reference = local;
+ ma.value_type = m.return_type.copy ();
+ visit_member_access (ma);
out_postfragment.append (new CCodeExpressionStatement (get_unref_expression (new CCodeIdentifier ("result"), m.return_type, ma)));
}
}
@@ -824,6 +830,8 @@ public class Vala.DBusServerModule : DBusClientModule {
var local = new LocalVariable (prop.get_accessor.value_type, " result");
var ma = new MemberAccess.simple ("result");
ma.symbol_reference = local;
+ ma.value_type = local.variable_type.copy ();
+ visit_member_access (ma);
postfragment.append (new CCodeExpressionStatement (get_unref_expression (new CCodeIdentifier ("result"), prop.get_accessor.value_type, ma)));
}
@@ -1040,6 +1048,8 @@ public class Vala.DBusServerModule : DBusClientModule {
var local = new LocalVariable (prop.get_accessor.value_type, " result");
var ma = new MemberAccess.simple ("result");
ma.symbol_reference = local;
+ ma.value_type = local.variable_type.copy ();
+ visit_member_access (ma);
postfragment.append (new CCodeExpressionStatement (get_unref_expression (new CCodeIdentifier ("result"), prop.get_accessor.value_type, ma)));
}
@@ -1217,6 +1227,8 @@ public class Vala.DBusServerModule : DBusClientModule {
var local = new LocalVariable (owned_type, "value");
var ma = new MemberAccess.simple ("value");
ma.symbol_reference = local;
+ ma.value_type = local.variable_type.copy ();
+ visit_member_access (ma);
prop_block.add_statement (new CCodeExpressionStatement (get_unref_expression (new CCodeIdentifier ("value"), owned_type, ma)));
}
diff --git a/codegen/valagdbusclientmodule.vala b/codegen/valagdbusclientmodule.vala
index dd35c09f5..223703a9b 100644
--- a/codegen/valagdbusclientmodule.vala
+++ b/codegen/valagdbusclientmodule.vala
@@ -323,6 +323,8 @@ public class Vala.GDBusClientModule : GDBusModule {
var local = new LocalVariable (owned_type, param.name);
var ma = new MemberAccess.simple (param.name);
ma.symbol_reference = local;
+ ma.value_type = local.variable_type.copy ();
+ visit_member_access (ma);
ccode.add_expression (get_unref_expression (new CCodeIdentifier (param.name), owned_type, ma));
}
}
diff --git a/codegen/valagdbusservermodule.vala b/codegen/valagdbusservermodule.vala
index bf5fe2c1f..28acf7623 100644
--- a/codegen/valagdbusservermodule.vala
+++ b/codegen/valagdbusservermodule.vala
@@ -242,6 +242,8 @@ public class Vala.GDBusServerModule : GDBusClientModule {
var local = new LocalVariable (m.return_type, " result");
var ma = new MemberAccess.simple ("result");
ma.symbol_reference = local;
+ ma.value_type = local.variable_type.copy ();
+ visit_member_access (ma);
ccode.add_expression (get_unref_expression (new CCodeIdentifier ("result"), m.return_type, ma));
}
} else {
@@ -265,6 +267,8 @@ public class Vala.GDBusServerModule : GDBusClientModule {
var local = new LocalVariable (m.return_type, " result");
var ma = new MemberAccess.simple ("result");
ma.symbol_reference = local;
+ ma.value_type = local.variable_type.copy ();
+ visit_member_access (ma);
ccode.add_expression (get_unref_expression (new CCodeIdentifier ("result"), m.return_type, ma));
}
}
@@ -288,6 +292,8 @@ public class Vala.GDBusServerModule : GDBusClientModule {
var local = new LocalVariable (owned_type, param.name);
var ma = new MemberAccess.simple (param.name);
ma.symbol_reference = local;
+ ma.value_type = local.variable_type.copy ();
+ visit_member_access (ma);
ccode.add_expression (get_unref_expression (new CCodeIdentifier (param.name), owned_type, ma));
}
}
@@ -436,6 +442,8 @@ public class Vala.GDBusServerModule : GDBusClientModule {
var local = new LocalVariable (prop.property_type, " result");
var ma = new MemberAccess.simple ("result");
ma.symbol_reference = local;
+ ma.value_type = local.variable_type.copy ();
+ visit_member_access (ma);
ccode.add_expression (get_unref_expression (new CCodeIdentifier ("result"), prop.property_type, ma));
}
@@ -493,6 +501,8 @@ public class Vala.GDBusServerModule : GDBusClientModule {
var local = new LocalVariable (owned_type, "value");
var ma = new MemberAccess.simple ("value");
ma.symbol_reference = local;
+ ma.value_type = local.variable_type.copy ();
+ visit_member_access (ma);
ccode.add_expression (get_unref_expression (new CCodeIdentifier ("value"), owned_type, ma));
}