Change the specs for readinto() -- it should *not* shorten the buffer to
the amount of data read.
diff --git a/Lib/io.py b/Lib/io.py
index d6ee186..db0ba7e 100644
--- a/Lib/io.py
+++ b/Lib/io.py
@@ -132,7 +132,8 @@
         set not to block and has no data to read.
         """
         b = bytes(n.__index__())
-        self.readinto(b)
+        n = self.readinto(b)
+        del b[n:]
         return b
 
     def readinto(self, b):
@@ -200,8 +201,10 @@
 
     def readinto(self, b):
         # XXX We really should have os.readinto()
-        b[:] = os.read(self._fd, len(b))
-        return len(b)
+        tmp = os.read(self._fd, len(b))
+        n = len(tmp)
+        b[:n] = tmp
+        return n
 
     def write(self, b):
         return os.write(self._fd, b)
@@ -303,7 +306,10 @@
         return b
 
     def readinto(self, b):
-        b[:] = self.read(len(b))
+        tmp = self.read(len(b))
+        n = len(tmp)
+        b[:n] = tmp
+        return n
 
     def write(self, b):
         n = len(b)