From 2edec49b7f7aa627295d74cf9c42030ef0610d92 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 12 Mar 2026 19:52:10 +0100 Subject: [PATCH] fix: writing of large unsigned integers --- src/cbor.zig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cbor.zig b/src/cbor.zig index a1b8eb0..052c050 100644 --- a/src/cbor.zig +++ b/src/cbor.zig @@ -255,7 +255,8 @@ fn writeUnion(writer: *Io.Writer, value: anytype, info: std.builtin.Type.Union) pub fn writeValue(writer: *Io.Writer, value: anytype) Io.Writer.Error!void { const T = @TypeOf(value); switch (@typeInfo(T)) { - .int, .comptime_int => return if (T == u64) writeU64(writer, value) else writeI64(writer, @intCast(value)), + .int => |info| return if (info.signedness == .unsigned) writeU64(writer, @intCast(value)) else writeI64(writer, @intCast(value)), + .comptime_int => return if (value >= 0) writeU64(writer, @intCast(value)) else writeI64(writer, @intCast(value)), .bool => return writeBool(writer, value), .optional => return if (value) |v| writeValue(writer, v) else writeNull(writer), .error_union => return if (value) |v| writeValue(writer, v) else |err| writeValue(writer, err),