pkg/devicemapper: fix invalid usage of reflect.SliceHeader
The current usage of reflect.SliceHeader violates rule 6th of unsafe.Pointer conversion. In short, reflect.SliceHeader could not be used as plain struct. See https://golang.org/pkg/unsafe/#Pointer Signed-off-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
This commit is contained in:
parent
7bb1944edb
commit
c208f03fbd
1 changed files with 5 additions and 6 deletions
|
@ -150,12 +150,11 @@ func dmTaskGetDepsFct(task *cdmTask) *Deps {
|
|||
}
|
||||
|
||||
// golang issue: https://github.com/golang/go/issues/11925
|
||||
hdr := reflect.SliceHeader{
|
||||
Data: uintptr(unsafe.Pointer(uintptr(unsafe.Pointer(Cdeps)) + unsafe.Sizeof(*Cdeps))),
|
||||
Len: int(Cdeps.count),
|
||||
Cap: int(Cdeps.count),
|
||||
}
|
||||
devices := *(*[]C.uint64_t)(unsafe.Pointer(&hdr))
|
||||
var devices []C.uint64_t
|
||||
devicesHdr := (*reflect.SliceHeader)(unsafe.Pointer(&devices))
|
||||
devicesHdr.Data = uintptr(unsafe.Pointer(uintptr(unsafe.Pointer(Cdeps)) + unsafe.Sizeof(*Cdeps)))
|
||||
devicesHdr.Len = int(Cdeps.count)
|
||||
devicesHdr.Cap = int(Cdeps.count)
|
||||
|
||||
deps := &Deps{
|
||||
Count: uint32(Cdeps.count),
|
||||
|
|
Loading…
Reference in a new issue