aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorLuca Ivaldi <luca.ivaldi.75@gmail.com>2023-11-24 17:31:12 +0100
committerGitHub <noreply@github.com>2023-11-24 18:31:12 +0200
commit3acb0e30a06d7ef7ece9257bc3423b9c85a12c06 (patch)
treecd1374c808210688c5800f51dcd65adc8f148771 /lib
parent54f4abae2f811c6de1d5c5156961e1bd75405aa6 (diff)
downloadzig-3acb0e30a06d7ef7ece9257bc3423b9c85a12c06.tar.gz
zig-3acb0e30a06d7ef7ece9257bc3423b9c85a12c06.zip
std.fmt: fix overflow when formatting comptime_float
Diffstat (limited to 'lib')
-rw-r--r--lib/std/fmt.zig6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/std/fmt.zig b/lib/std/fmt.zig
index b93138d979..c93b8363a7 100644
--- 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" {