mirror of https://github.com/gofiber/fiber.git
25 lines
526 B
Go
25 lines
526 B
Go
//go:build !go1.20
|
|
|
|
package utils
|
|
|
|
import (
|
|
"reflect"
|
|
"unsafe"
|
|
)
|
|
|
|
const MaxStringLen = 0x7fff0000 // Maximum string length for UnsafeBytes. (decimal: 2147418112)
|
|
|
|
// UnsafeBytes returns a byte pointer without allocation.
|
|
// String length shouldn't be more than 2147418112.
|
|
//
|
|
//nolint:gosec // unsafe is used for better performance here
|
|
func UnsafeBytes(s string) []byte {
|
|
if s == "" {
|
|
return nil
|
|
}
|
|
|
|
return (*[MaxStringLen]byte)(unsafe.Pointer(
|
|
(*reflect.StringHeader)(unsafe.Pointer(&s)).Data),
|
|
)[:len(s):len(s)]
|
|
}
|