[py-svn] r46010 - py/trunk/py/execnet

fijal at codespeak.net fijal at codespeak.net
Mon Aug 27 10:45:04 CEST 2007


Author: fijal
Date: Mon Aug 27 10:45:03 2007
New Revision: 46010

Modified:
   py/trunk/py/execnet/inputoutput.py
Log:
Merge from branch - a lock for files, prevents segfaults of cpython


Modified: py/trunk/py/execnet/inputoutput.py
==============================================================================
--- py/trunk/py/execnet/inputoutput.py	(original)
+++ py/trunk/py/execnet/inputoutput.py	Mon Aug 27 10:45:03 2007
@@ -3,7 +3,7 @@
   across process or computer barriers.
 """
 
-import socket, os, sys
+import socket, os, sys, thread
 
 class SocketIO:
     server_stmt = """
@@ -76,6 +76,7 @@
             msvcrt.setmode(outfile.fileno(), os.O_BINARY)
         self.outfile, self.infile = infile, outfile
         self.readable = self.writeable = True
+        self.lock = thread.allocate_lock()
 
     def read(self, numbytes):
         """Read exactly 'bytes' bytes from the pipe. """
@@ -99,6 +100,10 @@
             self.infile.close()
             self.readable = None
     def close_write(self):
-        if self.writeable:
-            self.outfile.close()
-            self.writeable = None
+        self.lock.acquire()
+        try:
+            if self.writeable:
+                self.outfile.close()
+                self.writeable = None
+        finally:
+            self.lock.release()


More information about the py-svn mailing list