zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 3acb0e30a06d7ef7ece9257bc3423b9c85a12c06 (tree)
parent 54f4abae2f811c6de1d5c5156961e1bd75405aa6
Author: Luca Ivaldi <luca.ivaldi.75@gmail.com>
Date:   Fri, 24 Nov 2023 17:31:12 +0100

std.fmt: fix overflow when formatting comptime_float


Diffstat:
Mlib/std/fmt.zig | 6++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/lib/std/fmt.zig b/lib/std/fmt.zig @@ -1302,7 +1302,7 @@ pub fn formatFloatDecimal( // We may have to zero pad, for instance 1e4 requires zero padding. try writer.writeAll(float_decimal.digits[0..num_digits_whole_no_pad]); - var i = num_digits_whole_no_pad; + var i: usize = num_digits_whole_no_pad; while (i < num_digits_whole) : (i += 1) { try writer.writeAll("0"); } @@ -1360,7 +1360,7 @@ pub fn formatFloatDecimal( // We may have to zero pad, for instance 1e4 requires zero padding. try writer.writeAll(float_decimal.digits[0..num_digits_whole_no_pad]); - var i = num_digits_whole_no_pad; + var i: usize = num_digits_whole_no_pad; while (i < num_digits_whole) : (i += 1) { try writer.writeAll("0"); } @@ -2059,6 +2059,8 @@ test "comptimePrint" { @setEvalBranchQuota(2000); try std.testing.expectEqual(*const [3:0]u8, @TypeOf(comptimePrint("{}", .{100}))); try std.testing.expectEqualSlices(u8, "100", comptimePrint("{}", .{100})); + try std.testing.expectEqualStrings("30", comptimePrint("{d}", .{30.0})); + try std.testing.expectEqualStrings("30.0", comptimePrint("{d:3.1}", .{30.0})); } test "parse u64 digit too big" {