faulthandler: enhance dump_ascii() to escape also non-printable ASCII
characters (U+0000..U+001f and U+007f).
This commit is contained in:
parent
392f4139b3
commit
b86f08f743
|
@ -541,15 +541,16 @@ dump_ascii(int fd, PyObject *text)
|
||||||
ch = PyUnicode_READ(kind, data, i);
|
ch = PyUnicode_READ(kind, data, i);
|
||||||
else
|
else
|
||||||
ch = wstr[i];
|
ch = wstr[i];
|
||||||
if (ch < 128) {
|
if (' ' <= ch && ch <= 126) {
|
||||||
|
/* printable ASCII character */
|
||||||
char c = (char)ch;
|
char c = (char)ch;
|
||||||
write(fd, &c, 1);
|
write(fd, &c, 1);
|
||||||
}
|
}
|
||||||
else if (ch < 0xff) {
|
else if (ch <= 0xff) {
|
||||||
PUTS(fd, "\\x");
|
PUTS(fd, "\\x");
|
||||||
dump_hexadecimal(fd, ch, 2);
|
dump_hexadecimal(fd, ch, 2);
|
||||||
}
|
}
|
||||||
else if (ch < 0xffff) {
|
else if (ch <= 0xffff) {
|
||||||
PUTS(fd, "\\u");
|
PUTS(fd, "\\u");
|
||||||
dump_hexadecimal(fd, ch, 4);
|
dump_hexadecimal(fd, ch, 4);
|
||||||
}
|
}
|
||||||
|
@ -644,7 +645,7 @@ write_thread_id(int fd, PyThreadState *tstate, int is_current)
|
||||||
PUTS(fd, "Current thread 0x");
|
PUTS(fd, "Current thread 0x");
|
||||||
else
|
else
|
||||||
PUTS(fd, "Thread 0x");
|
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");
|
PUTS(fd, " (most recent call first):\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue