From 9abc0c3ac3efcd9683922d37e2b3d77622764628 Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Fri, 13 Dec 2024 14:17:04 +0800 Subject: [PATCH] use `isprint` to improve bytes repr --- src/common/sstream.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/common/sstream.c b/src/common/sstream.c index 371e1d89..391ce205 100644 --- a/src/common/sstream.c +++ b/src/common/sstream.c @@ -99,10 +99,11 @@ void c11_sbuf__write_quoted(c11_sbuf* self, c11_sv sv, char quote) { case '\t': c11_sbuf__write_cstrn(self, "\\t", 2); break; case '\b': c11_sbuf__write_cstrn(self, "\\b", 2); break; default: - if('\x00' <= c && c <= '\x1f') { + if(!isprint(c)) { + unsigned char uc = (unsigned char)c; c11_sbuf__write_cstrn(self, "\\x", 2); - c11_sbuf__write_char(self, PK_HEX_TABLE[c >> 4]); - c11_sbuf__write_char(self, PK_HEX_TABLE[c & 0xf]); + c11_sbuf__write_char(self, PK_HEX_TABLE[uc >> 4]); + c11_sbuf__write_char(self, PK_HEX_TABLE[uc & 0xf]); } else { c11_sbuf__write_char(self, c); }