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)
diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py
index 1be1b71..03cdfef 100644
--- a/Lib/test/test_io.py
+++ b/Lib/test/test_io.py
@@ -70,10 +70,13 @@
     def read_ops(self, f):
         data = f.read(5)
         self.assertEqual(data, b"hello")
-        f.readinto(data)
+        n = f.readinto(data)
+        self.assertEqual(n, 5)
         self.assertEqual(data, b" worl")
-        f.readinto(data)
-        self.assertEqual(data, b"d\n")
+        n = f.readinto(data)
+        self.assertEqual(n, 2)
+        self.assertEqual(len(data), 5)
+        self.assertEqual(data[:2], b"d\n")
         f.seek(0)
         self.assertEqual(f.read(20), b"hello world\n")
         f.seek(-6, 2)
