diff options
| author | 2025-05-22 16:27:55 +0200 | |
|---|---|---|
| committer | 2025-05-22 16:27:55 +0200 | |
| commit | b6ff55662e0281c0d6e111f9307625ef695df2fa (patch) | |
| tree | 5f7761efa0b51a7a7d56f96fce3681c8e9b66fe9 /vendor/modernc.org/memory/mmap_unix.go | |
| parent | [chore/woodpecker] don't make `test` depend on `lint` (#4189) (diff) | |
| download | gotosocial-b6ff55662e0281c0d6e111f9307625ef695df2fa.tar.xz | |
[chore] update dependencies (#4188)
Update dependencies:
- github.com/gin-gonic/gin v1.10.0 -> v1.10.1
- github.com/gin-contrib/sessions v1.10.3 -> v1.10.4
- github.com/jackc/pgx/v5 v5.7.4 -> v5.7.5
- github.com/minio/minio-go/v7 v7.0.91 -> v7.0.92
- github.com/pquerna/otp v1.4.0 -> v1.5.0
- github.com/tdewolff/minify/v2 v2.23.5 -> v2.23.8
- github.com/yuin/goldmark v1.7.11 -> v1.7.12
- go.opentelemetry.io/otel{,/*} v1.35.0 -> v1.36.0
- modernc.org/sqlite v1.37.0 -> v1.37.1
Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4188
Reviewed-by: Daenney <daenney@noreply.codeberg.org>
Co-authored-by: kim <grufwub@gmail.com>
Co-committed-by: kim <grufwub@gmail.com>
Diffstat (limited to 'vendor/modernc.org/memory/mmap_unix.go')
| -rw-r--r-- | vendor/modernc.org/memory/mmap_unix.go | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/vendor/modernc.org/memory/mmap_unix.go b/vendor/modernc.org/memory/mmap_unix.go index ef6c9a539..8ee991538 100644 --- a/vendor/modernc.org/memory/mmap_unix.go +++ b/vendor/modernc.org/memory/mmap_unix.go @@ -14,7 +14,7 @@ import ( "unsafe" ) -const pageSizeLog = 20 +const pageSizeLog = 16 var ( osPageMask = osPageSize - 1 @@ -28,21 +28,23 @@ func unmap(addr uintptr, size int) error { // pageSize aligned. func mmap(size int) (uintptr, int, error) { size = roundup(size, osPageSize) - up, err := unix.MmapPtr(-1, 0, nil, uintptr(size+pageSize), unix.PROT_READ|unix.PROT_WRITE, unix.MAP_PRIVATE|unix.MAP_ANON) + // Ask for more so we can align the result at a pageSize boundary + n := size + pageSize + up, err := unix.MmapPtr(-1, 0, nil, uintptr(n), unix.PROT_READ|unix.PROT_WRITE, unix.MAP_PRIVATE|unix.MAP_ANON) if err != nil { return 0, 0, err } p := uintptr(up) - n := size + pageSize if p&uintptr(osPageMask) != 0 { panic("internal error") } mod := int(p) & pageMask - if mod != 0 { + if mod != 0 { // Return the extra part before pageSize aligned block m := pageSize - mod if err := unmap(p, m); err != nil { + unmap(p, n) // Do not leak the first mmap return 0, 0, err } @@ -54,9 +56,13 @@ func mmap(size int) (uintptr, int, error) { panic("internal error") } - if n-size != 0 { + if n > size { // Return the extra part after pageSize aligned block if err := unmap(p+uintptr(size), n-size); err != nil { - return 0, 0, err + // Do not error when the kernel rejects the extra part after, just return the + // unexpectedly enlarged size. + // + // Fixes the bigsort.test failures on linux/s390x, see: https://gitlab.com/cznic/sqlite/-/issues/207 + size = n } } |
