[pypy-commit] pypy stdlib-2.7.8: merged upstream
alex_gaynor
noreply at buildbot.pypy.org
Wed Aug 27 19:35:19 CEST 2014
Author: Alex Gaynor <alex.gaynor at gmail.com>
Branch: stdlib-2.7.8
Changeset: r73097:138f485e13fe
Date: 2014-08-27 10:34 -0700
http://bitbucket.org/pypy/pypy/changeset/138f485e13fe/
Log: merged upstream
diff --git a/pypy/module/_file/test/test_file.py b/pypy/module/_file/test/test_file.py
--- a/pypy/module/_file/test/test_file.py
+++ b/pypy/module/_file/test/test_file.py
@@ -269,6 +269,9 @@
try:
f.write('hello')
raises(IOError, f.write, '\n')
+ f.write('zzz')
+ raises(IOError, f.flush)
+ f.flush()
finally:
f.close()
diff --git a/rpython/rlib/streamio.py b/rpython/rlib/streamio.py
--- a/rpython/rlib/streamio.py
+++ b/rpython/rlib/streamio.py
@@ -731,16 +731,23 @@
def __init__(self, base, bufsize=-1):
self.base = base
- self.do_write = base.write # write more data
self.do_tell = base.tell # return a byte offset
if bufsize == -1: # Get default from the class
bufsize = self.bufsize
self.bufsize = bufsize # buffer size (hint only)
self.buf = []
self.buflen = 0
+ self.error = False
+
+ def do_write(self, data):
+ try:
+ self.base.write(data)
+ except:
+ self.error = True
+ raise
def flush_buffers(self):
- if self.buf:
+ if self.buf and not self.error:
self.do_write(''.join(self.buf))
self.buf = []
self.buflen = 0
@@ -749,6 +756,7 @@
return self.do_tell() + self.buflen
def write(self, data):
+ self.error = False
buflen = self.buflen
datalen = len(data)
if datalen + buflen < self.bufsize:
@@ -783,6 +791,7 @@
"""
def write(self, data):
+ self.error = False
p = data.rfind('\n') + 1
assert p >= 0
if self.buflen + len(data) < self.bufsize:
More information about the pypy-commit
mailing list