gitea

Development moved to Codeberg

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
package websspi

import (
	"unicode/utf16"
	"unsafe"
)

// UTF16PtrToString converts a pointer to a UTF16 string to a string
func UTF16PtrToString(ptr *uint16, maxLen int) (s string) {
	if ptr == nil {
		return ""
	}
	buf := make([]uint16, 0, maxLen)
	for i, p := 0, uintptr(unsafe.Pointer(ptr)); i < maxLen; i, p = i+1, p+2 {
		char := *(*uint16)(unsafe.Pointer(p))
		if char == 0 {
			return string(utf16.Decode(buf))
		}
		buf = append(buf, char)
	}
	return ""
}