(original) (raw)

changeset: 89260:423cb79640eb parent: 89258:587fd4b91120 parent: 89259:83013a7be836 user: Victor Stinner victor.stinner@gmail.com date: Tue Feb 18 22:06:35 2014 +0100 files: Lib/subprocess.py Misc/NEWS description: (Merge 3.3) Issue #19612: On Windows, subprocess.Popen.communicate() now ignores OSError(22, 'Invalid argument') when writing input data into stdin, whereas the process already exited. diff -r 587fd4b91120 -r 423cb79640eb Lib/subprocess.py --- a/Lib/subprocess.py Tue Feb 18 12:37:12 2014 -0800 +++ b/Lib/subprocess.py Tue Feb 18 22:06:35 2014 +0100 @@ -1186,7 +1186,15 @@ try: self.stdin.write(input) except OSError as e: - if e.errno != errno.EPIPE: + if e.errno == errno.EPIPE: + # communicate() should ignore pipe full error + pass + elif (e.errno == errno.EINVAL + and self.poll() is not None): + # Issue #19612: stdin.write() fails with EINVAL + # if the process already exited before the write + pass + else: raise self.stdin.close() diff -r 587fd4b91120 -r 423cb79640eb Misc/NEWS --- a/Misc/NEWS Tue Feb 18 12:37:12 2014 -0800 +++ b/Misc/NEWS Tue Feb 18 22:06:35 2014 +0100 @@ -28,6 +28,10 @@ Library ------- +- Issue #19612: On Windows, subprocess.Popen.communicate() now ignores + OSError(22, 'Invalid argument') when writing input data into stdin, whereas + the process already exited. + - Issue #20320: select.select() and select.kqueue.control() now round the timeout aways from zero, instead of rounding towards zero. /victor.stinner@gmail.com