seed r678 - trunk/libseed



Author: racarr
Date: Thu Jan  8 04:48:40 2009
New Revision: 678
URL: http://svn.gnome.org/viewvc/seed?rev=678&view=rev

Log:
Base memory usage is down another 100k or so.

Modified:
   trunk/libseed/seed-engine.c
   trunk/libseed/seed-structs.c

Modified: trunk/libseed/seed-engine.c
==============================================================================
--- trunk/libseed/seed-engine.c	(original)
+++ trunk/libseed/seed-engine.c	Thu Jan  8 04:48:40 2009
@@ -1121,15 +1121,19 @@
 		else if (info && (g_base_info_get_type(info) == GI_INFO_TYPE_CONSTANT))
 		{
 			GArgument argument;
+			GITypeInfo * constant_type =
+				g_constant_info_get_type((GIConstantInfo *) info);
 			JSValueRef constant_value;
 
 			g_constant_info_get_value((GIConstantInfo *) info, &argument);
 			constant_value =
 				seed_gi_argument_make_js(ctx, &argument,
-										 g_constant_info_get_type((GIConstantInfo *) info), exception);
+										 constant_type, exception);
 			seed_object_set_property(ctx, namespace_ref,
 									 g_base_info_get_name(info),
 									 constant_value);
+			
+			g_base_info_unref((GIBaseInfo *)constant_type);
 
 		}
 		g_base_info_unref(info);

Modified: trunk/libseed/seed-structs.c
==============================================================================
--- trunk/libseed/seed-structs.c	(original)
+++ trunk/libseed/seed-structs.c	Thu Jan  8 04:48:40 2009
@@ -128,7 +128,7 @@
 {
 	GITypeInfo *field_type;
 	GArgument field_value;
-	JSValueRef ret;
+	JSValueRef ret = JSValueMakeNull(ctx);;
 
 	field_type = g_field_info_get_type(field);
 	if (!g_field_info_get_field(field, object, &field_value))
@@ -142,20 +142,26 @@
 
 			interface = g_type_info_get_interface(field_type);
 			gint offset = g_field_info_get_offset(field);
+
+			g_base_info_unref((GIBaseInfo *)field_type);
 			switch (g_base_info_get_type(interface))
 			{
 			case GI_INFO_TYPE_STRUCT:
-				return seed_make_struct(ctx, (object + offset), interface);
+				ret = seed_make_struct(ctx, (object + offset), interface);
+				break;
 
 			case GI_INFO_TYPE_UNION:
-				return seed_make_union(ctx, (object + offset), interface);
-
+				ret = seed_make_union(ctx, (object + offset), interface);
+				break;
 			case GI_INFO_TYPE_BOXED:
-				return seed_make_boxed(ctx, (object + offset), interface);
-
+				ret = seed_make_boxed(ctx, (object + offset), interface);
+				break;
 			default:
-				g_base_info_unref(interface);
+				break;
 			}
+			g_base_info_unref(interface);
+			
+			return ret;
 		}
 
 		return JSValueMakeNull(ctx);
@@ -477,6 +483,10 @@
 							key,
 							proto);
 	}
+	else
+	{
+		g_free(key);
+	}
 
 	return proto;
 }



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