windows/registry: make '-gcflags=all=-d=checkptr' flag work
Mostly replaced [:x] slice operation with [:x:x].
This change is copy of CL 203442.
Updates golang/go#34972
Change-Id: I9b725a39aea469bd5669cc1deb3d02a88912843e
Reviewed-on: https://go-review.googlesource.com/c/sys/+/204017
Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/windows/registry/value.go b/windows/registry/value.go
index d332d83..f25e7e9 100644
--- a/windows/registry/value.go
+++ b/windows/registry/value.go
@@ -108,7 +108,7 @@
if len(data) == 0 {
return "", typ, nil
}
- u := (*[1 << 29]uint16)(unsafe.Pointer(&data[0]))[:len(data)/2]
+ u := (*[1 << 29]uint16)(unsafe.Pointer(&data[0]))[: len(data)/2 : len(data)/2]
return syscall.UTF16ToString(u), typ, nil
}
@@ -185,8 +185,7 @@
return "", err
}
if n <= uint32(len(r)) {
- u := (*[1 << 29]uint16)(unsafe.Pointer(&r[0]))[:]
- return syscall.UTF16ToString(u), nil
+ return syscall.UTF16ToString(r[:n]), nil
}
r = make([]uint16, n)
}
@@ -208,7 +207,7 @@
if len(data) == 0 {
return nil, typ, nil
}
- p := (*[1 << 29]uint16)(unsafe.Pointer(&data[0]))[:len(data)/2]
+ p := (*[1 << 29]uint16)(unsafe.Pointer(&data[0]))[: len(data)/2 : len(data)/2]
if len(p) == 0 {
return nil, typ, nil
}
@@ -299,7 +298,7 @@
if err != nil {
return err
}
- buf := (*[1 << 29]byte)(unsafe.Pointer(&v[0]))[:len(v)*2]
+ buf := (*[1 << 29]byte)(unsafe.Pointer(&v[0]))[: len(v)*2 : len(v)*2]
return k.setValue(name, valtype, buf)
}
@@ -329,7 +328,7 @@
ss += s + "\x00"
}
v := utf16.Encode([]rune(ss + "\x00"))
- buf := (*[1 << 29]byte)(unsafe.Pointer(&v[0]))[:len(v)*2]
+ buf := (*[1 << 29]byte)(unsafe.Pointer(&v[0]))[: len(v)*2 : len(v)*2]
return k.setValue(name, MULTI_SZ, buf)
}