Parcourir la source

use `isprint` to improve bytes repr

blueloveTH il y a 1 an
Parent
commit
9abc0c3ac3
1 fichiers modifiés avec 4 ajouts et 3 suppressions
  1. 4 3
      src/common/sstream.c

+ 4 - 3
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 '\t': c11_sbuf__write_cstrn(self, "\\t", 2); break;
             case '\b': c11_sbuf__write_cstrn(self, "\\b", 2); break;
             case '\b': c11_sbuf__write_cstrn(self, "\\b", 2); break;
             default:
             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_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 {
                 } else {
                     c11_sbuf__write_char(self, c);
                     c11_sbuf__write_char(self, c);
                 }
                 }