faulthandler: enhance dump_ascii() to escape also non-printable ASCII

characters (U+0000..U+001f and U+007f).
This commit is contained in:
Victor Stinner 2014-10-03 14:18:09 +02:00
parent 392f4139b3
commit b86f08f743
1 changed files with 5 additions and 4 deletions

View File

@ -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");
}