Fixes GO-2026-6629 (golang.org/x/text precis panic). Bumps bun and bun/dialect/pgdialect together to v1.3.0; go directive now 1.26.0.
87 lines
3.4 KiB
Go
87 lines
3.4 KiB
Go
// Code generated by modernc.org/undup from the per-target sqlite_*.go files; DO NOT EDIT.
|
|
|
|
//go:build (linux && arm64) || (linux && riscv64)
|
|
|
|
package sqlite3
|
|
|
|
import (
|
|
"unsafe"
|
|
|
|
"modernc.org/libc"
|
|
)
|
|
|
|
// C documentation
|
|
//
|
|
// /*
|
|
// ** Append a single path element to the DbPath under construction
|
|
// */
|
|
func _appendOnePathElement(tls *libc.TLS, pPath uintptr, zName uintptr, nName int32) {
|
|
bp := tls.Alloc(4240)
|
|
defer tls.Free(4240)
|
|
var got Tssize_t
|
|
var zIn, v2 uintptr
|
|
var v1 int32
|
|
var _ /* buf at bp+0 */ Tstat
|
|
var _ /* zLnk at bp+128 */ [4098]uint8
|
|
_, _, _, _ = got, zIn, v1, v2
|
|
if libc.Int32FromUint8(**(**uint8)(__ccgo_up(zName))) == int32('.') {
|
|
if nName == int32(1) {
|
|
return
|
|
}
|
|
if libc.Int32FromUint8(**(**uint8)(__ccgo_up(zName + 1))) == int32('.') && nName == int32(2) {
|
|
if (*TDbPath)(unsafe.Pointer(pPath)).FnUsed > int32(1) {
|
|
for {
|
|
v2 = pPath + 20
|
|
*(*int32)(unsafe.Pointer(v2)) = *(*int32)(unsafe.Pointer(v2)) - 1
|
|
v1 = *(*int32)(unsafe.Pointer(v2))
|
|
if !(libc.Int32FromUint8(**(**uint8)(__ccgo_up((*TDbPath)(unsafe.Pointer(pPath)).FzOut + uintptr(v1)))) != int32('/')) {
|
|
break
|
|
}
|
|
}
|
|
}
|
|
return
|
|
}
|
|
}
|
|
if (*TDbPath)(unsafe.Pointer(pPath)).FnUsed+nName+int32(2) >= (*TDbPath)(unsafe.Pointer(pPath)).FnOut {
|
|
(*TDbPath)(unsafe.Pointer(pPath)).Frc = int32(SQLITE_ERROR)
|
|
return
|
|
}
|
|
v2 = pPath + 20
|
|
v1 = *(*int32)(unsafe.Pointer(v2))
|
|
*(*int32)(unsafe.Pointer(v2)) = *(*int32)(unsafe.Pointer(v2)) + 1
|
|
**(**uint8)(__ccgo_up((*TDbPath)(unsafe.Pointer(pPath)).FzOut + uintptr(v1))) = uint8('/')
|
|
libc.Xmemcpy(tls, (*TDbPath)(unsafe.Pointer(pPath)).FzOut+uintptr((*TDbPath)(unsafe.Pointer(pPath)).FnUsed), zName, libc.Uint64FromInt32(nName))
|
|
**(**int32)(__ccgo_up(pPath + 20)) += nName
|
|
if (*TDbPath)(unsafe.Pointer(pPath)).Frc == SQLITE_OK {
|
|
**(**uint8)(__ccgo_up((*TDbPath)(unsafe.Pointer(pPath)).FzOut + uintptr((*TDbPath)(unsafe.Pointer(pPath)).FnUsed))) = uint8(0)
|
|
zIn = (*TDbPath)(unsafe.Pointer(pPath)).FzOut
|
|
if (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(&struct{ uintptr }{_aSyscall[int32(27)].FpCurrent})))(tls, zIn, bp) != 0 {
|
|
if **(**int32)(__ccgo_up(libc.X__errno_location(tls))) != int32(ENOENT) {
|
|
(*TDbPath)(unsafe.Pointer(pPath)).Frc = _unixLogErrorAtLine(tls, _sqlite3CantopenError(tls, int32(47301)), __ccgo_ts+3740, zIn, int32(47301))
|
|
}
|
|
} else {
|
|
if (**(**Tstat)(__ccgo_up(bp))).Fst_mode&uint32(S_IFMT) == uint32(S_IFLNK) {
|
|
v2 = pPath + 4
|
|
v1 = *(*int32)(unsafe.Pointer(v2))
|
|
*(*int32)(unsafe.Pointer(v2)) = *(*int32)(unsafe.Pointer(v2)) + 1
|
|
if v1 > int32(SQLITE_MAX_SYMLINK) {
|
|
(*TDbPath)(unsafe.Pointer(pPath)).Frc = _sqlite3CantopenError(tls, int32(47307))
|
|
return
|
|
}
|
|
got = (*(*func(*libc.TLS, uintptr, uintptr, Tsize_t) Tssize_t)(unsafe.Pointer(&struct{ uintptr }{_aSyscall[int32(26)].FpCurrent})))(tls, zIn, bp+128, libc.Uint64FromInt64(4098)-libc.Uint64FromInt32(2))
|
|
if got <= 0 || got >= libc.Int64FromInt64(4098)-libc.Int64FromInt32(2) {
|
|
(*TDbPath)(unsafe.Pointer(pPath)).Frc = _unixLogErrorAtLine(tls, _sqlite3CantopenError(tls, int32(47312)), __ccgo_ts+3731, zIn, int32(47312))
|
|
return
|
|
}
|
|
(**(**[4098]uint8)(__ccgo_up(bp + 128)))[got] = uint8(0)
|
|
if libc.Int32FromUint8((**(**[4098]uint8)(__ccgo_up(bp + 128)))[0]) == int32('/') {
|
|
(*TDbPath)(unsafe.Pointer(pPath)).FnUsed = 0
|
|
} else {
|
|
**(**int32)(__ccgo_up(pPath + 20)) -= nName + int32(1)
|
|
}
|
|
_appendAllPathElements(tls, pPath, bp+128)
|
|
}
|
|
}
|
|
}
|
|
}
|