+2008-12-14 Jürg Billeter <j@bitron.ch>
+
+ * gobject/valaccodebasemodule.vala:
+
+ Fix struct dup function for GValue
+
2008-12-14 Jürg Billeter <j@bitron.ch>
* gobject/valaccodebasemodule.vala:
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