From 968cb91346aa85e5ddbc7080d80cfe84975329f5 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Fri, 26 Apr 2024 12:37:59 +0200 Subject: pkg/ipc: remove use of reflect.SliceHeader Linter now complains: Error: SA1019: reflect.SliceHeader has been deprecated since Go 1.21 and an alternative has been available since Go 1.17: Use unsafe.Slice or unsafe.SliceData instead. --- pkg/ipc/ipc.go | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) (limited to 'pkg/ipc') diff --git a/pkg/ipc/ipc.go b/pkg/ipc/ipc.go index 16840f6a2..daebc257d 100644 --- a/pkg/ipc/ipc.go +++ b/pkg/ipc/ipc.go @@ -9,7 +9,7 @@ import ( "os" "os/exec" "path/filepath" - "reflect" + "slices" "strings" "sync" "time" @@ -479,20 +479,15 @@ func readUint32Array(outp *[]byte, size uint32) ([]uint32, bool) { return nil, true } out := *outp - if int(size)*4 > len(out) { + dataSize := int(size * 4) + if dataSize > len(out) { return nil, false } // "Convert" the data to uint32. - var res []uint32 - hdr := (*reflect.SliceHeader)((unsafe.Pointer(&res))) - hdr.Data = uintptr(unsafe.Pointer(&out[0])) - hdr.Len = int(size) - hdr.Cap = int(size) - *outp = out[size*4:] - // Now duplicate the resulting array. - dupRes := make([]uint32, size) - copy(dupRes, res) - return dupRes, true + res := unsafe.Slice((*uint32)(unsafe.Pointer(&out[0])), size) + *outp = out[dataSize:] + // Detach the resulting array from the original data. + return slices.Clone(res), true } type command struct { -- cgit mrf-deployment