authorgravatar for luca.ivaldi.75@gmail.comLuca Ivaldi <luca.ivaldi.75@gmail.com> 2023-11-24 17:31:12+01:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2023-11-24 18:31:12+02:00
log3acb0e30a06d7ef7ece9257bc3423b9c85a12c06
treecd1374c808210688c5800f51dcd65adc8f148771
parent54f4abae2f811c6de1d5c5156961e1bd75405aa6
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

std.fmt: fix overflow when formatting comptime_float


1 files changed, 4 insertions(+), 2 deletions(-)

lib/std/fmt.zig+4-2
......@@ -1302,7 +1302,7 @@ pub fn formatFloatDecimal(
13021302 // We may have to zero pad, for instance 1e4 requires zero padding.
13031303 try writer.writeAll(float_decimal.digits[0..num_digits_whole_no_pad]);
13041304
1305 var i = num_digits_whole_no_pad;
1305 var i: usize = num_digits_whole_no_pad;
13061306 while (i < num_digits_whole) : (i += 1) {
13071307 try writer.writeAll("0");
13081308 }
......@@ -1360,7 +1360,7 @@ pub fn formatFloatDecimal(
13601360 // We may have to zero pad, for instance 1e4 requires zero padding.
13611361 try writer.writeAll(float_decimal.digits[0..num_digits_whole_no_pad]);
13621362
1363 var i = num_digits_whole_no_pad;
1363 var i: usize = num_digits_whole_no_pad;
13641364 while (i < num_digits_whole) : (i += 1) {
13651365 try writer.writeAll("0");
13661366 }
......@@ -2059,6 +2059,8 @@ test "comptimePrint" {
20592059 @setEvalBranchQuota(2000);
20602060 try std.testing.expectEqual(*const [3:0]u8, @TypeOf(comptimePrint("{}", .{100})));
20612061 try std.testing.expectEqualSlices(u8, "100", comptimePrint("{}", .{100}));
2062 try std.testing.expectEqualStrings("30", comptimePrint("{d}", .{30.0}));
2063 try std.testing.expectEqualStrings("30.0", comptimePrint("{d:3.1}", .{30.0}));
20622064}
20632065
20642066test "parse u64 digit too big" {