Blame vendor/github.com/mattn/go-ieproxy/utils.go

Packit 63bb0d
package ieproxy
Packit 63bb0d
Packit 63bb0d
import (
Packit 63bb0d
	"unicode/utf16"
Packit 63bb0d
	"unsafe"
Packit 63bb0d
)
Packit 63bb0d
Packit 63bb0d
// StringFromUTF16Ptr converts a *uint16 C string to a Go String
Packit 63bb0d
func StringFromUTF16Ptr(s *uint16) string {
Packit 63bb0d
	if s == nil {
Packit 63bb0d
		return ""
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	p := (*[1<<30 - 1]uint16)(unsafe.Pointer(s))
Packit 63bb0d
Packit 63bb0d
	// find the string length
Packit 63bb0d
	sz := 0
Packit 63bb0d
	for p[sz] != 0 {
Packit 63bb0d
		sz++
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	return string(utf16.Decode(p[:sz:sz]))
Packit 63bb0d
}