diff options
Diffstat (limited to 'lib/std/json/write_stream.zig')
| -rw-r--r-- | lib/std/json/write_stream.zig | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/std/json/write_stream.zig b/lib/std/json/write_stream.zig index 2bb79a017c..c30f8ba8d8 100644 --- a/lib/std/json/write_stream.zig +++ b/lib/std/json/write_stream.zig @@ -152,10 +152,17 @@ pub fn WriteStream(comptime OutStream: type, comptime max_depth: usize) type { ) !void { assert(self.state[self.state_index] == State.Value); switch (@typeInfo(@typeOf(value))) { - .Int => |info| if (info.bits < 53 or (value < 4503599627370496 and value > -4503599627370496)) { - try self.stream.print("{}", value); - self.popState(); - return; + .Int => |info| { + if (info.bits < 53) { + try self.stream.print("{}", value); + self.popState(); + return; + } + if (value < 4503599627370496 and (!info.is_signed or value > -4503599627370496)) { + try self.stream.print("{}", value); + self.popState(); + return; + } }, .Float => if (@floatCast(f64, value) == value) { try self.stream.print("{}", value); |
