diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2010-04-23 19:28:32 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2010-04-23 19:28:32 (GMT) |
commit | 4d078046605a53e061aedfb2694baade6d3f5483 (patch) | |
tree | 336a32632395d26ae61bf737aa9e872e395cd30f /Lib/subprocess.py | |
parent | 8c26c7d907d3eb5986b003d1187bc59076185d7b (diff) | |
download | cpython-4d078046605a53e061aedfb2694baade6d3f5483.zip cpython-4d078046605a53e061aedfb2694baade6d3f5483.tar.gz cpython-4d078046605a53e061aedfb2694baade6d3f5483.tar.bz2 |
Issue #8467: Pure Python implementation of subprocess encodes the error message
using surrogatepass error handler to support surrogates in the message
Diffstat (limited to 'Lib/subprocess.py')
-rw-r--r-- | Lib/subprocess.py | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/Lib/subprocess.py b/Lib/subprocess.py index ec391cb..b8bcd5e 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -1204,8 +1204,9 @@ class Popen(object): errno = 0 message = '%s:%x:%s' % (exc_type.__name__, errno, exc_value) - os.write(errpipe_write, message.encode()) - except: + message = message.encode(errors="surrogatepass") + os.write(errpipe_write, message) + except Exception: # We MUST not allow anything odd happening # above to prevent us from exiting below. pass @@ -1255,7 +1256,7 @@ class Popen(object): for fd in (p2cwrite, c2pread, errread): if fd != -1: os.close(fd) - err_msg = err_msg.decode() + err_msg = err_msg.decode(errors="surrogatepass") if issubclass(child_exception_type, OSError) and hex_errno: errno = int(hex_errno, 16) if errno != 0: |