Author: Brian Kearns <[email protected]>
Branch:
Changeset: r61175:0fa3dc324460
Date: 2013-02-13 06:22 -0500
http://bitbucket.org/pypy/pypy/changeset/0fa3dc324460/
Log: revert this _io change, not worth differing from cpython
diff --git a/pypy/module/_io/interp_bufferedio.py
b/pypy/module/_io/interp_bufferedio.py
--- a/pypy/module/_io/interp_bufferedio.py
+++ b/pypy/module/_io/interp_bufferedio.py
@@ -260,7 +260,7 @@
raise operationerrfmt(space.w_ValueError,
"whence must be between 0 and 2, not %d", whence)
self._check_closed(space, "seek of closed file")
- if whence != 2 and self.readable and self.read_end != -1:
+ if whence != 2 and self.readable:
# Check if seeking leaves us inside the current buffer, so as to
# return quickly if possible. Also, we needn't take the lock in
# this fast path.
@@ -268,15 +268,16 @@
self._raw_tell(space)
current = self.abs_pos
available = self._readahead()
- if whence == 0:
- offset = pos - (current - self._raw_offset())
- else:
- offset = pos
- if -self.pos <= offset <= available:
- newpos = self.pos + offset
- assert newpos >= 0
- self.pos = newpos
- return space.wrap(current - available + offset)
+ if available > 0:
+ if whence == 0:
+ offset = pos - (current - self._raw_offset())
+ else:
+ offset = pos
+ if -self.pos <= offset <= available:
+ newpos = self.pos + offset
+ assert newpos >= 0
+ self.pos = newpos
+ return space.wrap(current - available + offset)
# Fallback: invoke raw seek() method and clear buffer
with self.lock:
diff --git a/pypy/module/_io/test/test_bufferedio.py
b/pypy/module/_io/test/test_bufferedio.py
--- a/pypy/module/_io/test/test_bufferedio.py
+++ b/pypy/module/_io/test/test_bufferedio.py
@@ -153,19 +153,6 @@
assert f.read() == "\nc"
f.close()
- def test_seek_nocall(self):
- # test that when we're at the end of the buffer,
- # an in-buffer back seek doesn't produce a raw seek
- import _io
- raw = _io.FileIO(self.tmpfile)
- f = _io.BufferedReader(raw, buffer_size=3)
- f.read(1)
- f.seek(3, 0)
- def failing_seek(*args):
- assert False
- raw.seek = failing_seek
- f.seek(-1, 1)
-
def test_readlines(self):
import _io
raw = _io.FileIO(self.tmpfile)
@@ -604,7 +591,7 @@
expected[j] = 2
expected[i] = 1
assert raw.getvalue() == str(expected)
-
+
def test_interleaved_read_write(self):
import _io as io
# Test for issue #12213
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit