summaryrefslogtreecommitdiff
path: root/vendor/github.com/ncruces/go-sqlite3/vfs/shm_memlk.go
diff options
context:
space:
mode:
authorLibravatar Daenney <daenney@users.noreply.github.com>2024-12-20 22:37:19 +0100
committerLibravatar GitHub <noreply@github.com>2024-12-20 21:37:19 +0000
commit9ae0c7b3636365406b480b494dccc609ccba08b9 (patch)
treeb6a205df8ff83acaff1745ff88885d9346ffef04 /vendor/github.com/ncruces/go-sqlite3/vfs/shm_memlk.go
parent[bugfix] Load instance-wide custom css in page stylesheets template (#3601) (diff)
downloadgotosocial-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.go16
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 {