diff options
author | 2024-12-20 22:37:19 +0100 | |
---|---|---|
committer | 2024-12-20 21:37:19 +0000 | |
commit | 9ae0c7b3636365406b480b494dccc609ccba08b9 (patch) | |
tree | b6a205df8ff83acaff1745ff88885d9346ffef04 /vendor/github.com/ncruces/go-sqlite3/vfs/shm_memlk.go | |
parent | [bugfix] Load instance-wide custom css in page stylesheets template (#3601) (diff) | |
download | gotosocial-9ae0c7b3636365406b480b494dccc609ccba08b9.tar.xz |
[chore] Update ncruces/go-sqlite3 to 0.21.3 (#3629)
This includes some additional locking fixes for the BSDs.
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/vfs/shm_memlk.go')
-rw-r--r-- | vendor/github.com/ncruces/go-sqlite3/vfs/shm_memlk.go | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/shm_memlk.go b/vendor/github.com/ncruces/go-sqlite3/vfs/shm_memlk.go index 404019642..5c8071ebe 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/shm_memlk.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/shm_memlk.go @@ -10,9 +10,6 @@ func (s *vfsShm) shmMemLock(offset, n int32, flags _ShmFlag) _ErrorCode { case flags&_SHM_UNLOCK != 0: for i := offset; i < offset+n; i++ { if s.lock[i] { - if s.vfsShmParent.lock[i] == 0 { - panic(util.AssertErr()) - } if s.vfsShmParent.lock[i] <= 0 { s.vfsShmParent.lock[i] = 0 } else { @@ -23,20 +20,21 @@ func (s *vfsShm) shmMemLock(offset, n int32, flags _ShmFlag) _ErrorCode { } case flags&_SHM_SHARED != 0: for i := offset; i < offset+n; i++ { - if s.lock[i] { - panic(util.AssertErr()) - } - if s.vfsShmParent.lock[i]+1 <= 0 { + if !s.lock[i] && + s.vfsShmParent.lock[i]+1 <= 0 { return _BUSY } } for i := offset; i < offset+n; i++ { - s.vfsShmParent.lock[i]++ - s.lock[i] = true + if !s.lock[i] { + s.vfsShmParent.lock[i]++ + s.lock[i] = true + } } case flags&_SHM_EXCLUSIVE != 0: for i := offset; i < offset+n; i++ { if s.lock[i] { + // SQLite never requests an exclusive lock that it already holds. panic(util.AssertErr()) } if s.vfsShmParent.lock[i] != 0 { |