mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[chore] bump ncruces go-sqlite3 => v0.23.0 (#3785)
* bump ncruces go-sqlite3 => v0.23.0 * whoops, add missing vendor changes...
This commit is contained in:
3
vendor/github.com/ncruces/go-sqlite3/internal/util/func.go
generated
vendored
3
vendor/github.com/ncruces/go-sqlite3/internal/util/func.go
generated
vendored
@ -7,9 +7,6 @@ import (
|
||||
"github.com/tetratelabs/wazero/api"
|
||||
)
|
||||
|
||||
type i32 interface{ ~int32 | ~uint32 }
|
||||
type i64 interface{ ~int64 | ~uint64 }
|
||||
|
||||
type funcVI[T0 i32] func(context.Context, api.Module, T0)
|
||||
|
||||
func (fn funcVI[T0]) Call(ctx context.Context, mod api.Module, stack []uint64) {
|
||||
|
12
vendor/github.com/ncruces/go-sqlite3/internal/util/handle.go
generated
vendored
12
vendor/github.com/ncruces/go-sqlite3/internal/util/handle.go
generated
vendored
@ -20,7 +20,7 @@ func (s *handleState) CloseNotify(ctx context.Context, exitCode uint32) {
|
||||
s.holes = 0
|
||||
}
|
||||
|
||||
func GetHandle(ctx context.Context, id uint32) any {
|
||||
func GetHandle(ctx context.Context, id Ptr_t) any {
|
||||
if id == 0 {
|
||||
return nil
|
||||
}
|
||||
@ -28,14 +28,14 @@ func GetHandle(ctx context.Context, id uint32) any {
|
||||
return s.handles[^id]
|
||||
}
|
||||
|
||||
func DelHandle(ctx context.Context, id uint32) error {
|
||||
func DelHandle(ctx context.Context, id Ptr_t) error {
|
||||
if id == 0 {
|
||||
return nil
|
||||
}
|
||||
s := ctx.Value(moduleKey{}).(*moduleState)
|
||||
a := s.handles[^id]
|
||||
s.handles[^id] = nil
|
||||
if l := uint32(len(s.handles)); l == ^id {
|
||||
if l := Ptr_t(len(s.handles)); l == ^id {
|
||||
s.handles = s.handles[:l-1]
|
||||
} else {
|
||||
s.holes++
|
||||
@ -46,7 +46,7 @@ func DelHandle(ctx context.Context, id uint32) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func AddHandle(ctx context.Context, a any) uint32 {
|
||||
func AddHandle(ctx context.Context, a any) Ptr_t {
|
||||
if a == nil {
|
||||
panic(NilErr)
|
||||
}
|
||||
@ -59,12 +59,12 @@ func AddHandle(ctx context.Context, a any) uint32 {
|
||||
if h == nil {
|
||||
s.holes--
|
||||
s.handles[id] = a
|
||||
return ^uint32(id)
|
||||
return ^Ptr_t(id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add a new slot.
|
||||
s.handles = append(s.handles, a)
|
||||
return -uint32(len(s.handles))
|
||||
return -Ptr_t(len(s.handles))
|
||||
}
|
||||
|
17
vendor/github.com/ncruces/go-sqlite3/internal/util/json.go
generated
vendored
17
vendor/github.com/ncruces/go-sqlite3/internal/util/json.go
generated
vendored
@ -2,6 +2,7 @@ package util
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"math"
|
||||
"strconv"
|
||||
"time"
|
||||
"unsafe"
|
||||
@ -20,7 +21,7 @@ func (j JSON) Scan(value any) error {
|
||||
case int64:
|
||||
buf = strconv.AppendInt(nil, v, 10)
|
||||
case float64:
|
||||
buf = strconv.AppendFloat(nil, v, 'g', -1, 64)
|
||||
buf = AppendNumber(nil, v)
|
||||
case time.Time:
|
||||
buf = append(buf, '"')
|
||||
buf = v.AppendFormat(buf, time.RFC3339Nano)
|
||||
@ -33,3 +34,17 @@ func (j JSON) Scan(value any) error {
|
||||
|
||||
return json.Unmarshal(buf, j.Value)
|
||||
}
|
||||
|
||||
func AppendNumber(dst []byte, f float64) []byte {
|
||||
switch {
|
||||
case math.IsNaN(f):
|
||||
dst = append(dst, "null"...)
|
||||
case math.IsInf(f, 1):
|
||||
dst = append(dst, "9.0e999"...)
|
||||
case math.IsInf(f, -1):
|
||||
dst = append(dst, "-9.0e999"...)
|
||||
default:
|
||||
return strconv.AppendFloat(dst, f, 'g', -1, 64)
|
||||
}
|
||||
return dst
|
||||
}
|
||||
|
101
vendor/github.com/ncruces/go-sqlite3/internal/util/mem.go
generated
vendored
101
vendor/github.com/ncruces/go-sqlite3/internal/util/mem.go
generated
vendored
@ -7,110 +7,121 @@ import (
|
||||
"github.com/tetratelabs/wazero/api"
|
||||
)
|
||||
|
||||
func View(mod api.Module, ptr uint32, size uint64) []byte {
|
||||
const (
|
||||
PtrLen = 4
|
||||
IntLen = 4
|
||||
)
|
||||
|
||||
type (
|
||||
i8 interface{ ~int8 | ~uint8 }
|
||||
i32 interface{ ~int32 | ~uint32 }
|
||||
i64 interface{ ~int64 | ~uint64 }
|
||||
|
||||
Stk_t = uint64
|
||||
Ptr_t uint32
|
||||
Res_t int32
|
||||
)
|
||||
|
||||
func View(mod api.Module, ptr Ptr_t, size int64) []byte {
|
||||
if ptr == 0 {
|
||||
panic(NilErr)
|
||||
}
|
||||
if size > math.MaxUint32 {
|
||||
panic(RangeErr)
|
||||
}
|
||||
if size == 0 {
|
||||
return nil
|
||||
}
|
||||
buf, ok := mod.Memory().Read(ptr, uint32(size))
|
||||
if uint64(size) > math.MaxUint32 {
|
||||
panic(RangeErr)
|
||||
}
|
||||
buf, ok := mod.Memory().Read(uint32(ptr), uint32(size))
|
||||
if !ok {
|
||||
panic(RangeErr)
|
||||
}
|
||||
return buf
|
||||
}
|
||||
|
||||
func ReadUint8(mod api.Module, ptr uint32) uint8 {
|
||||
func Read[T i8](mod api.Module, ptr Ptr_t) T {
|
||||
if ptr == 0 {
|
||||
panic(NilErr)
|
||||
}
|
||||
v, ok := mod.Memory().ReadByte(ptr)
|
||||
v, ok := mod.Memory().ReadByte(uint32(ptr))
|
||||
if !ok {
|
||||
panic(RangeErr)
|
||||
}
|
||||
return v
|
||||
return T(v)
|
||||
}
|
||||
|
||||
func ReadUint32(mod api.Module, ptr uint32) uint32 {
|
||||
func Write[T i8](mod api.Module, ptr Ptr_t, v T) {
|
||||
if ptr == 0 {
|
||||
panic(NilErr)
|
||||
}
|
||||
v, ok := mod.Memory().ReadUint32Le(ptr)
|
||||
if !ok {
|
||||
panic(RangeErr)
|
||||
}
|
||||
return v
|
||||
}
|
||||
|
||||
func WriteUint8(mod api.Module, ptr uint32, v uint8) {
|
||||
if ptr == 0 {
|
||||
panic(NilErr)
|
||||
}
|
||||
ok := mod.Memory().WriteByte(ptr, v)
|
||||
ok := mod.Memory().WriteByte(uint32(ptr), uint8(v))
|
||||
if !ok {
|
||||
panic(RangeErr)
|
||||
}
|
||||
}
|
||||
|
||||
func WriteUint32(mod api.Module, ptr uint32, v uint32) {
|
||||
func Read32[T i32](mod api.Module, ptr Ptr_t) T {
|
||||
if ptr == 0 {
|
||||
panic(NilErr)
|
||||
}
|
||||
ok := mod.Memory().WriteUint32Le(ptr, v)
|
||||
v, ok := mod.Memory().ReadUint32Le(uint32(ptr))
|
||||
if !ok {
|
||||
panic(RangeErr)
|
||||
}
|
||||
return T(v)
|
||||
}
|
||||
|
||||
func Write32[T i32](mod api.Module, ptr Ptr_t, v T) {
|
||||
if ptr == 0 {
|
||||
panic(NilErr)
|
||||
}
|
||||
ok := mod.Memory().WriteUint32Le(uint32(ptr), uint32(v))
|
||||
if !ok {
|
||||
panic(RangeErr)
|
||||
}
|
||||
}
|
||||
|
||||
func ReadUint64(mod api.Module, ptr uint32) uint64 {
|
||||
func Read64[T i64](mod api.Module, ptr Ptr_t) T {
|
||||
if ptr == 0 {
|
||||
panic(NilErr)
|
||||
}
|
||||
v, ok := mod.Memory().ReadUint64Le(ptr)
|
||||
v, ok := mod.Memory().ReadUint64Le(uint32(ptr))
|
||||
if !ok {
|
||||
panic(RangeErr)
|
||||
}
|
||||
return v
|
||||
return T(v)
|
||||
}
|
||||
|
||||
func WriteUint64(mod api.Module, ptr uint32, v uint64) {
|
||||
func Write64[T i64](mod api.Module, ptr Ptr_t, v T) {
|
||||
if ptr == 0 {
|
||||
panic(NilErr)
|
||||
}
|
||||
ok := mod.Memory().WriteUint64Le(ptr, v)
|
||||
ok := mod.Memory().WriteUint64Le(uint32(ptr), uint64(v))
|
||||
if !ok {
|
||||
panic(RangeErr)
|
||||
}
|
||||
}
|
||||
|
||||
func ReadFloat64(mod api.Module, ptr uint32) float64 {
|
||||
return math.Float64frombits(ReadUint64(mod, ptr))
|
||||
func ReadFloat64(mod api.Module, ptr Ptr_t) float64 {
|
||||
return math.Float64frombits(Read64[uint64](mod, ptr))
|
||||
}
|
||||
|
||||
func WriteFloat64(mod api.Module, ptr uint32, v float64) {
|
||||
WriteUint64(mod, ptr, math.Float64bits(v))
|
||||
func WriteFloat64(mod api.Module, ptr Ptr_t, v float64) {
|
||||
Write64(mod, ptr, math.Float64bits(v))
|
||||
}
|
||||
|
||||
func ReadString(mod api.Module, ptr, maxlen uint32) string {
|
||||
func ReadString(mod api.Module, ptr Ptr_t, maxlen int64) string {
|
||||
if ptr == 0 {
|
||||
panic(NilErr)
|
||||
}
|
||||
switch maxlen {
|
||||
case 0:
|
||||
if maxlen <= 0 {
|
||||
return ""
|
||||
case math.MaxUint32:
|
||||
// avoid overflow
|
||||
default:
|
||||
maxlen = maxlen + 1
|
||||
}
|
||||
mem := mod.Memory()
|
||||
buf, ok := mem.Read(ptr, maxlen)
|
||||
maxlen = min(maxlen, math.MaxInt32-1) + 1
|
||||
buf, ok := mem.Read(uint32(ptr), uint32(maxlen))
|
||||
if !ok {
|
||||
buf, ok = mem.Read(ptr, mem.Size()-ptr)
|
||||
buf, ok = mem.Read(uint32(ptr), mem.Size()-uint32(ptr))
|
||||
if !ok {
|
||||
panic(RangeErr)
|
||||
}
|
||||
@ -122,13 +133,13 @@ func ReadString(mod api.Module, ptr, maxlen uint32) string {
|
||||
}
|
||||
}
|
||||
|
||||
func WriteBytes(mod api.Module, ptr uint32, b []byte) {
|
||||
buf := View(mod, ptr, uint64(len(b)))
|
||||
func WriteBytes(mod api.Module, ptr Ptr_t, b []byte) {
|
||||
buf := View(mod, ptr, int64(len(b)))
|
||||
copy(buf, b)
|
||||
}
|
||||
|
||||
func WriteString(mod api.Module, ptr uint32, s string) {
|
||||
buf := View(mod, ptr, uint64(len(s)+1))
|
||||
func WriteString(mod api.Module, ptr Ptr_t, s string) {
|
||||
buf := View(mod, ptr, int64(len(s))+1)
|
||||
buf[len(s)] = 0
|
||||
copy(buf, s)
|
||||
}
|
||||
|
18
vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_unix.go
generated
vendored
18
vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_unix.go
generated
vendored
@ -25,9 +25,9 @@ func (s *mmapState) new(ctx context.Context, mod api.Module, size int32) *Mapped
|
||||
|
||||
// Allocate page aligned memmory.
|
||||
alloc := mod.ExportedFunction("aligned_alloc")
|
||||
stack := [...]uint64{
|
||||
uint64(unix.Getpagesize()),
|
||||
uint64(size),
|
||||
stack := [...]Stk_t{
|
||||
Stk_t(unix.Getpagesize()),
|
||||
Stk_t(size),
|
||||
}
|
||||
if err := alloc.CallWithStack(ctx, stack[:]); err != nil {
|
||||
panic(err)
|
||||
@ -37,20 +37,20 @@ func (s *mmapState) new(ctx context.Context, mod api.Module, size int32) *Mapped
|
||||
}
|
||||
|
||||
// Save the newly allocated region.
|
||||
ptr := uint32(stack[0])
|
||||
buf := View(mod, ptr, uint64(size))
|
||||
res := &MappedRegion{
|
||||
ptr := Ptr_t(stack[0])
|
||||
buf := View(mod, ptr, int64(size))
|
||||
ret := &MappedRegion{
|
||||
Ptr: ptr,
|
||||
size: size,
|
||||
addr: unsafe.Pointer(&buf[0]),
|
||||
}
|
||||
s.regions = append(s.regions, res)
|
||||
return res
|
||||
s.regions = append(s.regions, ret)
|
||||
return ret
|
||||
}
|
||||
|
||||
type MappedRegion struct {
|
||||
addr unsafe.Pointer
|
||||
Ptr uint32
|
||||
Ptr Ptr_t
|
||||
size int32
|
||||
used bool
|
||||
}
|
||||
|
6
vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_windows.go
generated
vendored
6
vendor/github.com/ncruces/go-sqlite3/internal/util/mmap_windows.go
generated
vendored
@ -29,13 +29,13 @@ func MapRegion(ctx context.Context, mod api.Module, f *os.File, offset int64, si
|
||||
return nil, err
|
||||
}
|
||||
|
||||
res := &MappedRegion{Handle: h, addr: a}
|
||||
ret := &MappedRegion{Handle: h, addr: a}
|
||||
// SliceHeader, although deprecated, avoids a go vet warning.
|
||||
sh := (*reflect.SliceHeader)(unsafe.Pointer(&res.Data))
|
||||
sh := (*reflect.SliceHeader)(unsafe.Pointer(&ret.Data))
|
||||
sh.Len = int(size)
|
||||
sh.Cap = int(size)
|
||||
sh.Data = a
|
||||
return res, nil
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
func (r *MappedRegion) Unmap() error {
|
||||
|
Reference in New Issue
Block a user