changeset 45352:49f8ba4febec stable

keepalive: Do not append _rbuf if _raw_readinto exists (issue6356) The readline method append to the chunks the content of the _rbuf then there is a loop that call _raw_read which on Python3 call readinto. But the readinto version in mercurial append again the _rbuf content. So this creates the duplicate content. This does not happen in Python2 because _raw_read does not call readinto. Differential Revision: https://phab.mercurial-scm.org/D8859
author Cédric Krier <ced@b2ck.com>
date Sun, 02 Aug 2020 17:40:35 +0200
parents 3d414dce2d40
children f62bb5d07848
files mercurial/keepalive.py
diffstat 1 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/keepalive.py	Mon Aug 03 23:13:58 2020 +0530
+++ b/mercurial/keepalive.py	Sun Aug 02 17:40:35 2020 +0200
@@ -542,7 +542,11 @@
             return line
 
         # No newline in local buffer. Read until we find one.
-        chunks = [self._rbuf]
+        # readinto read via readinto will already return _rbuf
+        if self._raw_readinto is None:
+            chunks = [self._rbuf]
+        else:
+            chunks = []
         i = -1
         readsize = self._rbufsize
         while True: