vala r2144 - in trunk: . gobject



Author: juergbi
Date: Sun Dec 14 17:15:51 2008
New Revision: 2144
URL: http://svn.gnome.org/viewvc/vala?rev=2144&view=rev

Log:
2008-12-14  JÃrg Billeter  <j bitron ch>

	* gobject/valaccodebasemodule.vala:

	Fix struct dup function for GValue


Modified:
   trunk/ChangeLog
   trunk/gobject/valaccodebasemodule.vala

Modified: trunk/gobject/valaccodebasemodule.vala
==============================================================================
--- trunk/gobject/valaccodebasemodule.vala	(original)
+++ trunk/gobject/valaccodebasemodule.vala	Sun Dec 14 17:15:51 2008
@@ -1533,14 +1533,22 @@
 
 		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
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]