[pypy-commit] pypy use-file-star-for-file: fix flush at exit

bdkearns noreply at buildbot.pypy.org
Fri Aug 29 07:20:11 CEST 2014


Author: Brian Kearns <bdkearns at gmail.com>
Branch: use-file-star-for-file
Changeset: r73148:f61ee40f042c
Date: 2014-08-29 00:51 -0400
http://bitbucket.org/pypy/pypy/changeset/f61ee40f042c/

Log:	fix flush at exit

diff --git a/pypy/module/_file/interp_file.py b/pypy/module/_file/interp_file.py
--- a/pypy/module/_file/interp_file.py
+++ b/pypy/module/_file/interp_file.py
@@ -56,15 +56,11 @@
         except OSError as e:
             raise wrap_oserror_as_ioerror(self.space, e, self.w_name)
 
-    def fdopenstream(self, stream, fd, mode, w_name=None):
-        self.fd = fd
+    def fdopenstream(self, stream, mode):
+        self.stream = stream
         self.mode = mode
         self.binary = "b" in mode
-        if w_name is not None:
-            self.w_name = w_name
-        self.stream = stream
-        if stream.flushable():
-            getopenstreams(self.space)[stream] = None
+        getopenstreams(self.space)[stream] = None
 
     def check_not_dir(self, fd):
         try:
@@ -114,9 +110,8 @@
         self.direct_close()
         self.check_mode_ok(mode)
         self.w_name = w_name
-        self.stream = rfile.create_file(self.space.str_w(w_name), mode, buffering)
-        self.mode = mode
-        self.binary = "b" in mode
+        stream = rfile.create_file(self.space.str_w(w_name), mode, buffering)
+        self.fdopenstream(stream, mode)
 
     def direct___enter__(self):
         self.check_closed()
@@ -132,20 +127,19 @@
         self.direct_close()
         self.check_mode_ok(mode)
         self.w_name = self.space.wrap('<fdopen>')
-        self.stream = rfile.create_fdopen_rfile(fd, mode)
-        self.mode = mode
-        self.binary = "b" in mode
+        stream = rfile.create_fdopen_rfile(fd, mode)
+        self.fdopenstream(stream, mode)
 
     def direct_close(self):
         stream = self.stream
         if stream is not None:
             #self.newlines = self.stream.getnewlines()
             self.stream = None
-            #openstreams = getopenstreams(self.space)
-            #try:
-            #    del openstreams[stream]
-            #except KeyError:
-            #    pass
+            openstreams = getopenstreams(self.space)
+            try:
+                del openstreams[stream]
+            except KeyError:
+                pass
             # close the stream.  If cffi_fileobj is None, we close the
             # underlying fileno too.  Otherwise, we leave that to
             # cffi_fileobj.close().


More information about the pypy-commit mailing list