summaryrefslogtreecommitdiff
path: root/vendor/github.com/ncruces/go-sqlite3/internal/util/mmap.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2024-11-07 00:16:28 +0000
committerLibravatar GitHub <noreply@github.com>2024-11-07 00:16:28 +0000
commit45e1609377631070765065ffb35ed7d29e8e81f1 (patch)
tree51d170ff0d5fab1ab0f8b1b79c9dd8c31d4ce5b9 /vendor/github.com/ncruces/go-sqlite3/internal/util/mmap.go
parent[chore] update go ffmpreg to v0.6.0 (#3515) (diff)
downloadgotosocial-45e1609377631070765065ffb35ed7d29e8e81f1.tar.xz
bump ncruces/go-sqlite3 to v0.20.2 (#3524)
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/internal/util/mmap.go')
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/internal/util/mmap.go12
1 files changed, 8 insertions, 4 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/mmap.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/mmap.go
index 5788eeb24..613bb90b1 100644
--- a/vendor/github.com/ncruces/go-sqlite3/internal/util/mmap.go
+++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/mmap.go
@@ -1,4 +1,4 @@
-//go:build unix && (386 || arm || amd64 || arm64 || riscv64 || ppc64le) && !(sqlite3_noshm || sqlite3_nosys)
+//go:build unix && !sqlite3_nosys
package util
@@ -55,10 +55,10 @@ type MappedRegion struct {
used bool
}
-func MapRegion(ctx context.Context, mod api.Module, f *os.File, offset int64, size int32, prot int) (*MappedRegion, error) {
+func MapRegion(ctx context.Context, mod api.Module, f *os.File, offset int64, size int32, readOnly bool) (*MappedRegion, error) {
s := ctx.Value(moduleKey{}).(*moduleState)
r := s.new(ctx, mod, size)
- err := r.mmap(f, offset, prot)
+ err := r.mmap(f, offset, readOnly)
if err != nil {
return nil, err
}
@@ -75,7 +75,11 @@ func (r *MappedRegion) Unmap() error {
return err
}
-func (r *MappedRegion) mmap(f *os.File, offset int64, prot int) error {
+func (r *MappedRegion) mmap(f *os.File, offset int64, readOnly bool) error {
+ prot := unix.PROT_READ
+ if !readOnly {
+ prot |= unix.PROT_WRITE
+ }
_, err := unix.MmapPtr(int(f.Fd()), offset, r.addr, uintptr(r.size),
prot, unix.MAP_SHARED|unix.MAP_FIXED)
r.used = err == nil