summaryrefslogtreecommitdiff
path: root/vendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2024-12-12 19:44:53 +0000
committerLibravatar GitHub <noreply@github.com>2024-12-12 19:44:53 +0000
commitfb12bbb10b228fddf40ebd0e463d5afcd9299ebb (patch)
treec9239fe362ea38e71ab4363649ceff605cb4ab89 /vendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go
parentBump nanoid from 3.3.7 to 5.0.9 in /web/source (#3615) (diff)
downloadgotosocial-fb12bbb10b228fddf40ebd0e463d5afcd9299ebb.tar.xz
bump ncruces/go-sqlite3 to v0.21.0 (#3621)
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go')
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go14
1 files changed, 11 insertions, 3 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go b/vendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go
index 374d491ac..1de57640c 100644
--- a/vendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go
+++ b/vendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go
@@ -1,4 +1,4 @@
-//go:build (386 || arm || amd64 || arm64 || riscv64 || ppc64le) && !(sqlite3_dotlk || sqlite3_nosys)
+//go:build (386 || arm || amd64 || arm64 || riscv64 || ppc64le) && !sqlite3_dotlk
package vfs
@@ -7,6 +7,7 @@ import (
"io"
"os"
"sync"
+ "syscall"
"time"
"github.com/tetratelabs/wazero/api"
@@ -27,6 +28,7 @@ type vfsShm struct {
shadow [][_WALINDEX_PGSZ]byte
ptrs []uint32
stack [1]uint64
+ fileLock bool
blocking bool
sync.Mutex
}
@@ -46,12 +48,16 @@ func (s *vfsShm) Close() error {
func (s *vfsShm) shmOpen() _ErrorCode {
if s.File == nil {
- f, err := osutil.OpenFile(s.path, os.O_RDWR|os.O_CREATE, 0666)
+ f, err := osutil.OpenFile(s.path,
+ os.O_RDWR|os.O_CREATE|syscall.O_NONBLOCK, 0666)
if err != nil {
return _CANTOPEN
}
s.File = f
}
+ if s.fileLock {
+ return _OK
+ }
// Dead man's switch.
if rc := osWriteLock(s.File, _SHM_DMS, 1, 0); rc == _OK {
@@ -61,7 +67,9 @@ func (s *vfsShm) shmOpen() _ErrorCode {
return _IOERR_SHMOPEN
}
}
- return osReadLock(s.File, _SHM_DMS, 1, time.Millisecond)
+ rc := osReadLock(s.File, _SHM_DMS, 1, time.Millisecond)
+ s.fileLock = rc == _OK
+ return rc
}
func (s *vfsShm) shmMap(ctx context.Context, mod api.Module, id, size int32, extend bool) (_ uint32, rc _ErrorCode) {