seed r425 - trunk/modules/Multiprocessing
- From: racarr svn gnome org
- To: svn-commits-list gnome org
- Subject: seed r425 - trunk/modules/Multiprocessing
- Date: Wed, 10 Dec 2008 00:42:33 +0000 (UTC)
Author: racarr
Date: Wed Dec 10 00:42:33 2008
New Revision: 425
URL: http://svn.gnome.org/viewvc/seed?rev=425&view=rev
Log:
Close pipes when Pipe object is collected.
Modified:
   trunk/modules/Multiprocessing/multi.c
Modified: trunk/modules/Multiprocessing/multi.c
==============================================================================
--- trunk/modules/Multiprocessing/multi.c	(original)
+++ trunk/modules/Multiprocessing/multi.c	Wed Dec 10 00:42:33 2008
@@ -12,6 +12,14 @@
 	GIOChannel * write;
 } pipe_priv;
 
+void pipe_finalize(SeedObject pipeobj)
+{
+	pipe_priv * priv = seed_object_get_private(pipeobj);
+	g_io_channel_unref(priv->read);
+	g_io_channel_unref(priv->write);
+	g_free(priv);
+}
+
 SeedObject seed_construct_pipe(SeedContext ctx,
 							   SeedObject constructor,
 							   size_t argument_count,
@@ -42,6 +50,11 @@
 	priv_two->read = g_io_channel_unix_new(fd2[0]);
 	priv_two->write = g_io_channel_unix_new(fd1[1]);
 	
+	g_io_channel_set_close_on_unref(priv_one->read, TRUE);
+	g_io_channel_set_close_on_unref(priv_one->write, TRUE);
+	g_io_channel_set_close_on_unref(priv_two->read, TRUE);
+	g_io_channel_set_close_on_unref(priv_two->write, TRUE);
+	
 	jsret = seed_make_object(ctx, 0, 0);
 	jsone = seed_make_object(ctx, pipe_class, priv_one);
 	jstwo = seed_make_object(ctx, pipe_class, priv_two);
@@ -163,6 +176,7 @@
 	
 	pipe_class_def.class_name = "Pipe";
 	pipe_class_def.static_functions = pipe_funcs;
+	pipe_class_def.finalize = pipe_finalize;
 
 	pipe_class = seed_create_class(&pipe_class_def);
 	
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]