mercurial/worker.py
branchstable
changeset 49208 2fe4efaa59af
parent 46819 d4ba4d51f85f
child 49217 13dfad0f9f7a
--- a/mercurial/worker.py	Wed May 04 13:53:12 2022 +0400
+++ b/mercurial/worker.py	Tue May 17 14:36:57 2022 -0400
@@ -78,6 +78,21 @@
         # _wrapped.readinto(), since that is unbuffered. The unpickler is fine
         # with just read() and readline(), so we don't need to implement it.
 
+        if (3, 8, 0) <= sys.version_info[:3] < (3, 8, 2):
+
+            # This is required for python 3.8, prior to 3.8.2.  See issue6444.
+            def readinto(self, b):
+                pos = 0
+                size = len(b)
+
+                while pos < size:
+                    ret = self._wrapped.readinto(b[pos:])
+                    if not ret:
+                        break
+                    pos += ret
+
+                return pos
+
         def readline(self):
             return self._wrapped.readline()