diff -r 20f0c5398e97 Lib/StringIO.py --- a/Lib/StringIO.py Mon Feb 04 10:29:38 2013 -0500 +++ b/Lib/StringIO.py Wed Feb 06 15:36:23 2013 +0200 @@ -158,7 +158,7 @@ newpos = self.len else: newpos = i+1 - if length is not None and length > 0: + if length is not None and length >= 0: if self.pos + length < newpos: newpos = self.pos + length r = self.buf[self.pos:newpos] diff -r 20f0c5398e97 Lib/test/test_StringIO.py --- a/Lib/test/test_StringIO.py Mon Feb 04 10:29:38 2013 -0500 +++ b/Lib/test/test_StringIO.py Wed Feb 06 15:36:23 2013 +0200 @@ -27,6 +27,8 @@ eq = self.assertEqual self.assertRaises(TypeError, self._fp.seek) eq(self._fp.read(10), self._line[:10]) + eq(self._fp.read(0), '') + eq(self._fp.readline(0), '') eq(self._fp.readline(), self._line[10:] + '\n') eq(len(self._fp.readlines(60)), 2) self._fp.seek(0)