vala r2154 - in trunk: . gobject
- From: juergbi svn gnome org
- To: svn-commits-list gnome org
- Subject: vala r2154 - in trunk: . gobject
- Date: Mon, 15 Dec 2008 08:59:06 +0000 (UTC)
Author: juergbi
Date: Mon Dec 15 08:59:06 2008
New Revision: 2154
URL: http://svn.gnome.org/viewvc/vala?rev=2154&view=rev
Log:
2008-12-15 JÃrg Billeter <j bitron ch>
* gobject/valaccodestructmodule.vala:
Fix handling of array fields in structs, fixes bug 562665
Modified:
trunk/ChangeLog
trunk/gobject/valaccodestructmodule.vala
Modified: trunk/gobject/valaccodestructmodule.vala
==============================================================================
--- trunk/gobject/valaccodestructmodule.vala (original)
+++ trunk/gobject/valaccodestructmodule.vala Mon Dec 15 08:59:06 2008
@@ -172,10 +172,22 @@
if (f.binding == MemberBinding.INSTANCE) {
CCodeExpression copy = new CCodeMemberAccess.pointer (new CCodeIdentifier ("self"), f.name);
if (requires_copy (f.field_type)) {
- copy = get_ref_cexpression (f.field_type, copy, null, f);
+ var this_access = new MemberAccess.simple ("this");
+ this_access.value_type = get_data_type_for_symbol ((TypeSymbol) f.parent_symbol);
+ this_access.ccodenode = new CCodeIdentifier ("(*self)");
+ var ma = new MemberAccess (this_access, f.name);
+ ma.symbol_reference = f;
+ copy = get_ref_cexpression (f.field_type, copy, ma, f);
}
var dest = new CCodeMemberAccess.pointer (new CCodeIdentifier ("dest"), f.name);
cblock.add_statement (new CCodeExpressionStatement (new CCodeAssignment (dest, copy)));
+
+ var array_type = f.field_type as ArrayType;
+ for (int dim = 1; dim <= array_type.rank; dim++) {
+ var len_src = new CCodeMemberAccess.pointer (new CCodeIdentifier ("self"), get_array_length_cname (f.name, dim));
+ var len_dest = new CCodeMemberAccess.pointer (new CCodeIdentifier ("dest"), get_array_length_cname (f.name, dim));
+ cblock.add_statement (new CCodeExpressionStatement (new CCodeAssignment (len_dest, len_src)));
+ }
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]