From: Jürg Billeter Date: Sun, 14 Dec 2008 17:15:51 +0000 (+0000) Subject: Fix struct dup function for GValue X-Git-Tag: VALA_0_5_3~50 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6e78b9a058f0b7d342db9bd6d0109bdee2ffe29f;p=thirdparty%2Fvala.git Fix struct dup function for GValue 2008-12-14 Jürg Billeter * gobject/valaccodebasemodule.vala: Fix struct dup function for GValue svn path=/trunk/; revision=2144 --- diff --git a/ChangeLog b/ChangeLog index ccee45d8c..995679795 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-12-14 Jürg Billeter + + * gobject/valaccodebasemodule.vala: + + Fix struct dup function for GValue + 2008-12-14 Jürg Billeter * gobject/valaccodebasemodule.vala: diff --git a/gobject/valaccodebasemodule.vala b/gobject/valaccodebasemodule.vala index ea4356396..c17eb790a 100644 --- a/gobject/valaccodebasemodule.vala +++ b/gobject/valaccodebasemodule.vala @@ -1533,14 +1533,22 @@ public class Vala.CCodeBaseModule : CCodeModule { var block = new CCodeBlock (); - var dup_call = new CCodeFunctionCall (new CCodeIdentifier ("g_memdup")); - dup_call.add_argument (new CCodeIdentifier ("self")); + if (value_type.type_symbol == gvalue_type) { + var dup_call = new CCodeFunctionCall (new CCodeIdentifier ("g_boxed_copy")); + dup_call.add_argument (new CCodeIdentifier ("G_TYPE_VALUE")); + dup_call.add_argument (new CCodeIdentifier ("self")); - var sizeof_call = new CCodeFunctionCall (new CCodeIdentifier ("sizeof")); - sizeof_call.add_argument (new CCodeIdentifier (value_type.type_symbol.get_cname ())); - dup_call.add_argument (sizeof_call); + block.add_statement (new CCodeReturnStatement (dup_call)); + } else { + var dup_call = new CCodeFunctionCall (new CCodeIdentifier ("g_memdup")); + dup_call.add_argument (new CCodeIdentifier ("self")); + + var sizeof_call = new CCodeFunctionCall (new CCodeIdentifier ("sizeof")); + sizeof_call.add_argument (new CCodeIdentifier (value_type.type_symbol.get_cname ())); + dup_call.add_argument (sizeof_call); - block.add_statement (new CCodeReturnStatement (dup_call)); + block.add_statement (new CCodeReturnStatement (dup_call)); + } // append to file