From 70d7f87be00aa1a372c856759948fd62666be295 Mon Sep 17 00:00:00 2001 From: Cody Tapscott Date: Thu, 10 Feb 2022 13:29:48 -0700 Subject: Fix up sign handling and add arbitrary-length integer support to @bitCast() --- src/value.zig | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/value.zig') diff --git a/src/value.zig b/src/value.zig index 33a75e08bb..2018eb3df3 100644 --- a/src/value.zig +++ b/src/value.zig @@ -1093,8 +1093,9 @@ pub const Value = extern union { .Int => { const int_info = ty.intInfo(target); const endian = target.cpu.arch.endian(); - // TODO use a correct amount of limbs - const limbs_buffer = try arena.alloc(std.math.big.Limb, 2); + const Limb = std.math.big.Limb; + const limb_count = (buffer.len + @sizeOf(Limb) - 1) / @sizeOf(Limb); + const limbs_buffer = try arena.alloc(Limb, limb_count); var bigint = BigIntMutable.init(limbs_buffer, 0); bigint.readTwosComplement(buffer, int_info.bits, endian, int_info.signedness); return fromBigInt(arena, bigint.toConst()); -- cgit v1.2.3