From: Victor Stinner Date: Fri, 3 Oct 2014 12:18:09 +0000 (+0200) Subject: faulthandler: enhance dump_ascii() to escape also non-printable ASCII X-Git-Tag: v3.5.0a1~775 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b86f08f743095c27641754fbfa941c38cdb381ef;p=python faulthandler: enhance dump_ascii() to escape also non-printable ASCII characters (U+0000..U+001f and U+007f). --- diff --git a/Python/traceback.c b/Python/traceback.c index 565094b1e8..5d60dade4c 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -541,15 +541,16 @@ dump_ascii(int fd, PyObject *text) ch = PyUnicode_READ(kind, data, i); else ch = wstr[i]; - if (ch < 128) { + if (' ' <= ch && ch <= 126) { + /* printable ASCII character */ char c = (char)ch; write(fd, &c, 1); } - else if (ch < 0xff) { + else if (ch <= 0xff) { PUTS(fd, "\\x"); dump_hexadecimal(fd, ch, 2); } - else if (ch < 0xffff) { + else if (ch <= 0xffff) { PUTS(fd, "\\u"); dump_hexadecimal(fd, ch, 4); } @@ -644,7 +645,7 @@ write_thread_id(int fd, PyThreadState *tstate, int is_current) PUTS(fd, "Current thread 0x"); else PUTS(fd, "Thread 0x"); - dump_hexadecimal(fd, (unsigned long)tstate->thread_id, sizeof(long)*2); + dump_hexadecimal(fd, (unsigned long)tstate->thread_id, sizeof(unsigned long)*2); PUTS(fd, " (most recent call first):\n"); }