bpo-43423 Fix IndexError in subprocess _communicate function (GH-24777)

Check to make sure stdout and stderr are not empty before selecting an item from them in Windows subprocess._communicate.

Co-authored-by: Gregory P. Smith <greg@krypto.org>
This commit is contained in:
Chris Griffith 2021-03-11 13:43:29 -06:00 committed by GitHub
parent 87f649a409
commit b4fc44bb2d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 4 deletions

View file

@ -1535,10 +1535,8 @@ def _communicate(self, input, endtime, orig_timeout):
self.stderr.close()
# All data exchanged. Translate lists into strings.
if stdout is not None:
stdout = stdout[0]
if stderr is not None:
stderr = stderr[0]
stdout = stdout[0] if stdout else None
stderr = stderr[0] if stderr else None
return (stdout, stderr)

View file

@ -0,0 +1,2 @@
:func:`subprocess.communicate` no longer raises an IndexError when there is an
empty stdout or stderr IO buffer during a timeout on Windows.