commit 7e5e767ba0fdde91dd66690168eff96b75c28e33 (tree)
parent 0267afa9c0aac51089150a9d2f6b2e53e9d2dbff
Author: LemonBoy <thatlemon@gmail.com>
Date: Wed, 15 Jan 2020 23:08:02 +0100
Fix regression in char printing
Closes #4014
Diffstat:
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/lib/std/fmt.zig b/lib/std/fmt.zig
@@ -585,9 +585,7 @@ pub fn formatAsciiChar(
comptime Errors: type,
output: fn (@TypeOf(context), []const u8) Errors!void,
) Errors!void {
- if (std.ascii.isPrint(c))
- return output(context, @as(*const [1]u8, &c)[0..]);
- return format(context, Errors, output, "\\x{x:0<2}", .{c});
+ return output(context, @as(*const [1]u8, &c)[0..]);
}
pub fn formatBuf(
diff --git a/src-self-hosted/translate_c.zig b/src-self-hosted/translate_c.zig
@@ -1708,7 +1708,14 @@ fn escapeChar(c: u8, char_buf: *[4]u8) []const u8 {
'\n' => "\\n"[0..],
'\r' => "\\r"[0..],
'\t' => "\\t"[0..],
- else => std.fmt.bufPrint(char_buf[0..], "{c}", .{c}) catch unreachable,
+ else => {
+ // Handle the remaining escapes Zig doesn't support by turning them
+ // into their respective hex representation
+ if (std.ascii.isCntrl(c))
+ return std.fmt.bufPrint(char_buf[0..], "\\x{x:0<2}", .{c}) catch unreachable
+ else
+ return std.fmt.bufPrint(char_buf[0..], "{c}", .{c}) catch unreachable;
+ },
};
}