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(...@@ -1302,7 +1302,7 @@ pub fn formatFloatDecimal(
1302 // We may have to zero pad, for instance 1e4 requires zero padding.1302 // We may have to zero pad, for instance 1e4 requires zero padding.
1303 try writer.writeAll(float_decimal.digits[0..num_digits_whole_no_pad]);1303 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;
1306 while (i < num_digits_whole) : (i += 1) {1306 while (i < num_digits_whole) : (i += 1) {
1307 try writer.writeAll("0");1307 try writer.writeAll("0");
1308 }1308 }
...@@ -1360,7 +1360,7 @@ pub fn formatFloatDecimal(...@@ -1360,7 +1360,7 @@ pub fn formatFloatDecimal(
1360 // We may have to zero pad, for instance 1e4 requires zero padding.1360 // We may have to zero pad, for instance 1e4 requires zero padding.
1361 try writer.writeAll(float_decimal.digits[0..num_digits_whole_no_pad]);1361 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;
1364 while (i < num_digits_whole) : (i += 1) {1364 while (i < num_digits_whole) : (i += 1) {
1365 try writer.writeAll("0");1365 try writer.writeAll("0");
1366 }1366 }
...@@ -2059,6 +2059,8 @@ test "comptimePrint" {...@@ -2059,6 +2059,8 @@ test "comptimePrint" {
2059 @setEvalBranchQuota(2000);2059 @setEvalBranchQuota(2000);
2060 try std.testing.expectEqual(*const [3:0]u8, @TypeOf(comptimePrint("{}", .{100})));2060 try std.testing.expectEqual(*const [3:0]u8, @TypeOf(comptimePrint("{}", .{100})));
2061 try std.testing.expectEqualSlices(u8, "100", comptimePrint("{}", .{100}));2061 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}));
2062}2064}
20632065
2064test "parse u64 digit too big" {2066test "parse u64 digit too big" {