From 36a92eff4638e550a3669da3caddf7039703c594 Mon Sep 17 00:00:00 2001 From: Sun Yimin Date: Thu, 1 Jun 2023 11:40:28 +0800 Subject: [PATCH] fix array len issue --- internal/bigmod/nat_noasm.go | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/internal/bigmod/nat_noasm.go b/internal/bigmod/nat_noasm.go index c87b3d4..00a7625 100644 --- a/internal/bigmod/nat_noasm.go +++ b/internal/bigmod/nat_noasm.go @@ -10,18 +10,26 @@ package bigmod import "unsafe" // TODO: will use unsafe.Slice directly once upgrade golang sdk to 1.17+ -func slice(ptr *uint, len int) []uint { - return (*[len]uint)(unsafe.Pointer(ptr))[:] +func slice1024(ptr *uint) []uint { + return (*[1024 / _W]uint)(unsafe.Pointer(ptr))[:] +} + +func slice1536(ptr *uint) []uint { + return (*[1536 / _W]uint)(unsafe.Pointer(ptr))[:] +} + +func slice2048(ptr *uint) []uint { + return (*[2048 / _W]uint)(unsafe.Pointer(ptr))[:] } func addMulVVW1024(z, x *uint, y uint) (c uint) { - return addMulVVW(slice(z, 1024/_W), slice(x, 1024/_W), y) + return addMulVVW(slice1024(z), slice1024(x), y) } func addMulVVW1536(z, x *uint, y uint) (c uint) { - return addMulVVW(slice(z, 1536/_W), slice(x, 1536/_W), y) + return addMulVVW(slice1536(z), slice1536(x), y) } func addMulVVW2048(z, x *uint, y uint) (c uint) { - return addMulVVW(slice(z, 2048/_W), slice(x, 2048/_W), y) + return addMulVVW(slice2048(z), slice2048(x), y) }