changeset 48842:90e564882f07 stable

procutil: avoid `+= None` when writing to full std{err,out} descriptor on py3 The write function returns `None` if there was no room to write the given data[1]. I don't like that this is effectively an infinite loop if there's never any progress emptying the underlying buffer, but we're no worse off than before, and it fixes random stacktrace popups seen in the py3 build of TortoiseHg. [1] https://docs.python.org/3/library/io.html#io.RawIOBase.write Differential Revision: https://phab.mercurial-scm.org/D12555
author Matt Harbison <matt_harbison@yahoo.com>
date Wed, 13 Apr 2022 14:46:22 -0400
parents 770e1352e9f9
children dd2503a63d33 ea98850a136e
files mercurial/utils/procutil.py
diffstat 1 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/utils/procutil.py	Mon Apr 18 20:45:38 2022 -0700
+++ b/mercurial/utils/procutil.py	Wed Apr 13 14:46:22 2022 -0400
@@ -112,7 +112,9 @@
         total_to_write = len(s)
         total_written = 0
         while total_written < total_to_write:
-            total_written += write1(m[total_written:])
+            c = write1(m[total_written:])
+            if c:
+                total_written += c
         return total_written