From ee9eefd81b028a81920d2965fee52311a1c94d3b Mon Sep 17 00:00:00 2001 From: Mike <45243121+tankf33der@users.noreply.github.com> Date: Wed, 12 Nov 2025 18:54:26 +0200 Subject: [PATCH] math.unsigned: fix put_bytes(), add test (#25718) --- vlib/math/unsigned/uint128.v | 4 ++-- vlib/math/unsigned/uint128_test.v | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/vlib/math/unsigned/uint128.v b/vlib/math/unsigned/uint128.v index 9ad8e6620..96693433c 100644 --- a/vlib/math/unsigned/uint128.v +++ b/vlib/math/unsigned/uint128.v @@ -413,8 +413,8 @@ pub fn (u_ Uint128) str() string { // put_bytes stores u in b in little-endian order pub fn (u Uint128) put_bytes(mut b []u8) { - binary.little_endian_put_u64(mut b, u.lo) - binary.little_endian_put_u64(mut b, u.hi) + binary.little_endian_put_u64(mut b[..8], u.lo) + binary.little_endian_put_u64(mut b[8..], u.hi) } // uint128_from_64 converts v to a Uint128 value diff --git a/vlib/math/unsigned/uint128_test.v b/vlib/math/unsigned/uint128_test.v index 45a961607..761998521 100644 --- a/vlib/math/unsigned/uint128_test.v +++ b/vlib/math/unsigned/uint128_test.v @@ -1,5 +1,6 @@ import math.big import math.unsigned +import rand fn test_str() { x := unsigned.uint128_from_dec_str('170141183460469231713240559642174554112') or { panic('') } @@ -241,3 +242,13 @@ fn test_div_128() { } } } + +fn test_put_bytes() { + a := unsigned.uint128_new(rand.u64(), rand.u64()) + b := a.reverse_bytes() + mut buf_a := []u8{len: 16} + mut buf_b := []u8{len: 16} + a.put_bytes(mut buf_a) + b.put_bytes(mut buf_b) + assert buf_a == buf_b.reverse() +} -- 2.39.5